ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浏览器的同源政策及其规避方法

2021-12-01 12:00:23  阅读:192  来源: 互联网

标签:网页 跨域 规避 window Cookie 同源 浏览器 document 窗口


含义

  • 同源:
    协议相同
    域名相同
    端口相同

限制范围

  • Cookie、LocalStorage 和 IndexDB 无法读取
  • DOM 无法获得
  • AJAX 请求不能发送

document.domain

  • 一级域名相同,二级域名不同

Cookie

  • 只有同源的网页才可以共享
  • 两个网页一级域名相同,只是二级域名不同,浏览器允许通过设置 document.domain 共享 Cookie
  • 适用于 Cookie 和 iframe

  • A 网页:http://w1.example.com/a.html
    B 网页:http://w2.example.com/b.html
    设置相同的 document.domain
    在这里插入图片描述
    A 网页设置一个 Cookie
    在这里插入图片描述
    B 网页读取这个 Cookie
    在这里插入图片描述

iframe

  • 如果两个网页不同源,就无法拿到对方的 DOM
  • iframe 窗口和 window.open 方法打开的窗口,无法与父窗口通信
  • 如果两个窗口一级域名相同,只是二级域名不同,可以通过 document.domain 属性,就可以规避同源政策,拿到DOM
  • 用 document.domain + iframe实现跨域

完全不同源

片段标识符

  • 父窗口可以把信息,写入子窗口的片段标识符
    var src = originURL + '#' + data;
    document.getElementById('myIFrame').src = src;
    
  • 子窗口通过监听 hashchange 事件得到通知
    window.onhashchange = checkMessage;
    
    function checkMessage() {
      var message = window.location.hash;
      // ...
    }
    
  • 子窗口也可以改变父窗口的片段标识符
    parent.location.href= target + "#" + hash;
    

window.name

window.postMessage

使用 window.postMessage 解决窗口间通信

webSocket 解决跨域问题

Ajax跨域

标签:网页,跨域,规避,window,Cookie,同源,浏览器,document,窗口
来源: https://blog.csdn.net/AnitaSun/article/details/121647201

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有