跨域总结

跨域

为什么出现跨域

浏览器同源政策的限制,如果缺少同源政策,则浏览器的正常功能可能受到影响。同源:两个页面具有相同的协议,主机和端口号

什么是跨域

当一个请求url的协议,域名,端口三者之间任意一个与当前页面url不同即为跨域
当前页面url 被请求页面url 是否跨域 原因
http://www.test.com/ http://www.test.com/index.html 同源(协议、域名、端口号相同)
http://www.test.com/ https://www.test.com/index.html 跨域 协议不同(http/https)
http://www.test.com/ http://www.baidu.com/ 跨域 主域名不同(test/baidu)
http://www.test.com/ http://blog.test.com/ 跨域 子域名不同(www/blog)
http://www.test.com:8080/ http://www.test.com:7001/ 跨域 端口号不同(8080/7001)

非同源限制

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反向代理
全部评论

相关推荐

03-21 08:46
已编辑
门头沟学院 C++
只写bug的程序媛:本科能找到好的,真不建议读研,提前占坑比较好,本科找不到好的,也不建议读研,因为两三年之后压力只会更大,唯一的解就是行业好起来
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务