跨域

同源策略

协议,域名,端口号必须相同;不同源不可操作对方的DOM文档
以下是跨域方法总结

跨域方法

cors:

基本思想:使用自定义的HTTP头让浏览器和服务器进行沟通,从而决定请求或响应是否要成功;
请求发送时要附加一个额外的Origin头部,包含请求页面的源信息;
当前域(常规为存放资源的服务器)在响应报头添加Access-Control-Allow-Origin标签,从而允许指定域的站点访问当前域上的资源,默认只支持GET/POST这两种http请求类型

HTML5解决方案:

使用 postMessage 方法和 onmessage 事件来实现不同域之间的通信,其中postMessage用于实时向接收信息的页面发送消息

jsonp:

通过script标签引入一个js文件,这个js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入,JSONP始终是无状态连接,不能获悉连接状态和错误事件,而且只能走GET的形式

iframe形式:

a. 通过修改document.domain来跨子域:只适合主域相同但子域不同的情况,把document.domain设置成自身或更高一级的父域,且主域必须相同,只适用于不同子域的框架间的交互,ajax还是不能获取信息
b. window.name:窗体的name值在页面跳转后依旧存在、保持原值(即使跳转的页面不同域),并且可以支持非常长的 name值(2MB)。在a.html页面中使用一个隐藏的iframe来充当一个中间人角色,由iframe去获取data.html的数据,然后a.html再去得到iframe获取到的数据。