9大跨域解决方案
同源策略
- 只要以下三者,有一个不一样,那就叫跨域。
- 协议
- 域名
- 端口
注意:子域不同,也叫跨域
为什么浏览器不支持跨域
- cookie localStorage 均不支持跨域
- DOM元素也有同源策略,比如iframe
- ajax也不支持跨域
如果可以直接跨域,可以发送恶意请求,造成伪造的请求,会造成信息窃取等危险。
跨域的原理
当客户端向服务端发送请求后,服务端接受到请求,并返回相应的数据给客户端。举例客户端为浏览器,当客户端接收到服务端返回的数据的时候,根据Netscape公司提供的安全策略——同源策略,会判定客户端与服务端的协议、端口和域名是否一致,如果一致,才能够将数据给客户端的脚本,也就是js代码才能接受到数据。
注意:跨域能返回到浏览器,并且能在控制台preview看到结果,但是不能返回到js脚本。
实现跨域的9种方法(点击可跳转详情页面)
- jsonp
- cors
- postMessage
- document.domain
- window.name
- location.hash
- http-proxy 后续会有详细文章阐述
- nginx 后续会有详细版块阐述
- websocket