几种跨域的解决方法

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。
但在实际运用中我们往往需要获取不同源的数据,以下为解决跨域问题获取不同源数据的几种方法

1. JSONP

一个网页可以从任何网页获得js文件,基于动态

2. CORS

跨域资源共享,允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。
额外添加一个origin头部,其中包含了请求页面的源消息(协议、域名和端口),根据这个头部信息服务器来决定是否给予响应,例如:

  • request的当前域


    image.png
  • request发起请求
xhr.open('get', 'http://a.song.com:8080/getSong', true);
  • 服务器设置允许请求的域
res.header("Access-Control-Allow-Origin", "http://localhost:8080");
image.png
  • 头部信息匹配,跨域请求成功


    几种跨域的解决方法_第1张图片
    image.png

3.postMessage

当前url:http://a.jrg.com:8080

向其他域发送数据


4.降域

当前页面的url:

URL: http://a.jrg.com:8080/a.html

向其他域请求资源:

URL: http://b.jrg.com:8080/b.html

降域实现



你可能感兴趣的:(几种跨域的解决方法)