跨域总结

跨域指浏览器不能执行其他网站的脚本及dom。是一种安全机制。
比如在iframe中操作其他网站的dom。
限制:cookie、localstorage、indexDB、js、dom、ajax
域名、协议、端口都相同的才没有跨域问题。

文章地址《详解跨域(最全的解决方案)》

  1. 通过jsonp
  2. document.domian + iframe
  3. window.name + iframe
  4. location.hash + iframe
  5. postMessage
  6. cors跨域资源共享
  7. websocket协议跨域
  8. node代理跨域
  9. nginx代理跨域
  • jsonp
    • 动态创建script标签,传递参数及回调
    • 只能处理get方法
  • document.domain + iframe
    • 不同二级域名,可以都设置document.domain为一级域名,都设置的原因是设置之后端口为null
  • window.name + iframe
    • window.name可以设置返回一个字符串,长度达到2M,不同页面及不同域下的加载仍然存在
    • 不同域设置window.name属性,但是由于跨域不能操作,在页面加载成功后需要替换成同源的src,因为window.name不会变化,所以可以拿到数据
  • location.hash + iframe
    • iframe通过将参数表现在location.hash中进行通信
  • postMessage()跨域
    • 进行post方法跨域
    • 在父窗口调用iframe.contentWindow.postMessage(data, iframeUrl)进行通信
    • 在子窗口调用window.parent.postMessage(data, parentUrl)
  • cors
    • 需要服务器同步支持,浏览器发现是跨域会自动添加origin的请求头
    • 简单请求跟非简单请求
    • 简单请求是指head、get、post
  • websocket协议跨域
    -websocket实现浏览器与服务器的双工通信,同时允许跨域
  • node代理跟nginx代理不了解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值