- 同源策略
- 跨域访问
- 跨域资源共享
- JSONP
- 服务器代理
window.name配合<iframe>window.postMessage()- 修改
document.domain跨子域 - WebSocket
- 跨域访问
同源策略
同源策略分为 DOM 和 XHR 两种,其中 DOM 同源策略对 <iframe> 有所限制。
跨域访问
因为浏览器的同源策略,在有访问不同域名的资源的需求时会造成一定的阻碍,这时需要根据具体情况采取一些手段才能达到目的。
跨域资源共享
英文全称为「cross-origin resource sharing」,简称「CORS」。此方式用于在浏览器中发起跨域的 AJAX 请求,主要依赖于服务端在响应头中设置 Access-Control-Allow-Origin。
如果是允许所有来源的请求访问,使用通配符 *:
Access-Control-Allow-Origin: *
若只允许某个来源,则要指明来源域名:
Access-Control-Allow-Origin: https://api.ourai.ws
在很多情况下,发送请求时需要附带 Cookie 等信息给服务端,这时就必须得指定来源域名了,并且还要在响应头中设置 Access-Control-Allow-Credentials:
Access-Control-Allow-Origin: https://api.ourai.wsAccess-Control-Allow-Credentials: true
另外,发送请求的 JavaScript 代码也需要做出相应的改变:
var xhr = new XMLHttpRequest();xhr.open('GET', 'https://api.ourai.ws/posts', true);xhr.withCredentials = true; // 这个一定要设置xhr.onreadystatechange = function() {// ...}xhr.send();
若是使用 jQuery 发送请求:
$.ajax({url: 'https://api.ourai.ws/posts',type: 'GET',xhrFields: {withCredentials: true},success: function() {// ...}});
