跨域
为什么出现跨域
浏览器同源政策的限制,如果缺少同源政策,则浏览器的正常功能可能受到影响。同源:两个页面具有相同的协议,主机和端口号
什么是跨域
当一个请求url的协议,域名,端口三者之间任意一个与当前页面url不同即为跨域
非同源限制
1.无法读取非同源网页的Cookie,LocalStorage和IndexdDB
2.无法接触非同源网页的DOM
3.无法向非同源地址发送AJAX请求
跨域解决办法
1.设置document.domain解决无法读取非同源网页的Cookie问题
因为浏览器是通过document.domain属性来检查两个页面是否同源,设置相同的document.domain就可以共享Cookie(仅限于主域相同,子域不同的应用场景)
2.跨文档通信API:window.postMessage()
通过psotMessage方法实现父网页向子网页发消息,子网页也可向父网页发消息
可以实现:
1)页面和其他新窗口的数据传递
2)多窗口之间消息传递
3)页面与嵌套的iframe之间消息传递
3.JSONP
客户端和服务器发送数据的常用方法,只能get方法,不能post方法
4.CORS
跨域资源分享
5.webpack本地代理
6.websocket
7.Nginx反向代理