Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

js解决跨域问题 #10

Open
upgrace opened this issue Apr 28, 2020 · 0 comments
Open

js解决跨域问题 #10

upgrace opened this issue Apr 28, 2020 · 0 comments

Comments

@upgrace
Copy link
Owner

upgrace commented Apr 28, 2020

1.同源策略
同源策略是浏览器的安全基石,同源策略是指 请求资源的协议、域名、端口号和当前网址的完全一样。
2.常用的方法及工作原理

2.1常用的方法
CORS、jsonp、iframe、script、代理、反代理
CORS: 定义: 跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行
原理: 跨域资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源
a)针对简单请求(get, post, head)直接请求(request 中带有origin字段),response中带有access-control-allow-origin,根据 Origin 和 Access-Control-Allow-Origin 就能完成最简单的访问控制是否支持
b)需预检的请求(delete、put、connect、options、trace、patch)首先使用options方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求
说明: 一般跨域的请求是不允许携带身份凭证的,如果需要,服务器端的响应要携带 Access-Control-Allow-Credentials: true

  jsonp:定义: 通过请求script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数
  原理:1.首先在客户端注册一个callback方法,放到window对象上,然后把callback的名字(callbackFunction)传给服务器。
   2.服务器先生成 JOSN 数据。
  3.将 JOSN 数据直接以入参的方式,放置到 function 中,后生成了一段 js 语法的文档(如callbackFunction(JOSN),返回给客户端。
  4.客户端浏览器,将返回的JS标签插入DOM,解析script标签后,会执行callbackFunction(JOSN)
 正向代理:定义: 客户端要向代理服务器发送一个请求,并指定目标服务器,代理服务器将目标服务器返回的数据转交给客户端
 原理:
 反向代理:定义:客户端将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址-- 客户端不需要做什么
  原理:

 反向代理的好处: https://juejin.im/post/5bacbd395188255c8d0fd4b2
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant