前端跨域及解决方法

什么是跨域?
当一个请求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)

二、为什么会出现跨域?
出于浏览器的*同源策略限制**。

同源策略(Same Orgin Policy)是一种约定,它是浏览器核心也最基本的安全功能,它会阻止一个域的js脚本和另外一个域的内容进行交互,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。。所谓同源(即在同一个域)就是两个页面具有相同的协议(protocol)、主机(host)和端口号(port)。

三、非同源限制
无法读取非同源网页的cookie、localstorage和indexedDB
无法接触非同源网页的DOM和js对象
无法向非同源地址发送Ajax请求

四、常用解决方案
(1)document.domain + iframe跨域
(2)location.hash + iframe跨域
(3)window.name + iframe跨域
(4)postMessage跨域
(5)通过jsonp跨域
(6)跨域资源共享(CORS)
(7)Nginx反向代理
(8)nodejs中间件地代理跨域
(9)WebSocket协议跨域
详细解决方法推荐去原网址去看:https://www.cnblogs.com/sdcs/p/8484905.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值