同源策略
同源策略是一种对浏览器发出请求的安全策略。根据这种策略,一个Web页面只能从同一来源(协议,域名和端口都必须相同)获取数据。
跨域问题.
当一个Web页面尝试从不同的源访问资源时,就会出现跨域问题。例如,一个在 www.example1.com 上托管的脚本尝试访问 www.example2.com 上的资源,这就违反了同源策略,所以浏览器会阻止这个请求并产生跨域错误。
解决跨域问题的手段
以下是一些常见的解决跨域问题的方法:
- CORS(跨源资源共享):CORS是一种让服务器允许来自特定源访问资源的机制。服务器通过设置特定的HTTP头部告诉浏览器哪些Web页面可以访问这些资源。
- JSONP(JSON with Padding):JSONP是一种通常用于解决跨域数据获取问题的方式。不过,这种方式局限于GET请求,并且安全性较差。
- 代理服务器:可以使用服务器端的代理转发请求,因为在服务器端不受同源策略限制。
- postMessage API:使用HTML5引入的 window.postMessage 方法,可以安全地实现跨源通信。
- WebSocket协议:WebSocket是一种建立在TCP协议之上的全双工通信协议,不受同源策略影响。
- WebSockets:WebSockets API 是另一种通信协议,它不受同源策略的影响,可以用于任何地方的通信。
- Document.domain+iframe:基于 document.domain 的跨域方法只适合主域相同的情况,也就是abc.example.com到www.example.com这样的跨域,区域子域和顶级字段相同。