美文网首页
同源与跨域(二)

同源与跨域(二)

作者: DHFE | 来源:发表于2018-04-24 23:52 被阅读8次

降域

在当前页面下的iframe的域名若与当前页面的域名不同源,则当前页面的js代码对iframe无法进行任何操作。
原因:这是为了保护用户在iframe中登录其他网站或与之类似的相关操作会泄露隐私数据

http://a.example.dirhttp://b.example.dir,后面的example.dir相同,那么就可以使用document.domain将二者的域名设置为example.dir来实现同源。
  • 顶级域名无法降域
  • 不仅当前页面要使用document.domain,iframe的源页面也要使用document.domain

降域主要针对于当前页面下的iframe

修改host文件使得不同域名映射至同一个IP地址,即可测试JSONP跨域

现在假设在http://a.example.dir/a.html页面里有一个iframe,src是http://b.example.dir/b.html,这个页面与它里面iframe框架是不同域的,所以我们无法通过页面中JS代码来读取iframe。

<script>
    function onload() {
        var iframe = document.getElementById("iframe");
        var win = iframe.contentWindow;    // 这里能够获取到iframe里的window对象,但是不可用
        var doc = win.document;            // 这里获取不到iframe里的document对象
        var name = win.name;               // 这里获取不到window对象的name属性
    }
</script>
    <iframe id="iframe" src="http://b.example.com:8080/b.html" onload="onload()"></iframe>
</body>

但是我们可以使用document.domain,我们只要把http://a.example.com/a.htmlhttp://b.example.com/b.html这两个页面的document.domain都设成相同的域名就可以了。

http://a.example.com/a.html中设置document.domain

<iframe id="iframe" src="http://b.example.com/b.html" onload="domain()"></iframe>
<script>
    document.domain = "example.com";       // 设置成主域
    function domain() {
        console.log(document.getElementById("iframe").contentWindow);
    }
</script>

document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。例如:a.b.example.com 中某个文档的document.domain 可以设成a.b.example.comb.example.comexample.com中的任意一个,但是不可以设成 c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。
作者:范小饭_
链接:https://www.jianshu.com/p/c71c20e98f94


postMessage

window.postMessage
html5跨域通信之postMessage的用法
实现两个窗口通信方法-postMessage


相关文章

  • 同源策略及跨域访问方案

    同源与跨域 浏览器同源策略 允许跨源访问使用CORS: 是HTTP的一部分 如何解决跨域读取Cookie二级域名不...

  • 面试官:那有没遇到跨域问题,如何解决跨域?

    面试官:有没遇到跨域问题,如何解决跨域? 一、同源策略 谈到跨域问题,要先谈浏览器的同源策略。 二、解决方案 1、...

  • 同源与跨域(二)

    降域 在当前页面下的iframe的域名若与当前页面的域名不同源,则当前页面的js代码对iframe无法进行任何操作...

  • 网站跨域解决方法

    关键词 同源策略 什么是跨域 跨域,请求不同源。同源指协议、域名、端口都相同,只要有一样不相同就是跨域了。 同源限...

  • Nginx的进阶二

    Nginx的进阶二 nginx的配置跨域问题 为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略(Sameo...

  • 前端开发的跨域问题

    跨域背景 跨域是由于浏览器的同源策略引起的;那么什么是同源策略呢?同源策略是指页面请求的接口地址必须与 url 地...

  • JSONP、CORS、跨域

    跨域 同源:两个文档同源需满足:协议、域名、端口相同跨域:不同域之间相互请求资源,就算作“跨域“。js进行DOM操...

  • 通过script标签实现跨域

    跨域 什么是跨域? 跨域问题是由于javascript语言安全限制中的同源策略造成的。同源策略是由Netscape...

  • jsonp

    参考:轻松搞定JSONP跨域请求参考:JavaScript 跨域总结与解决办法要理解跨域,先要了解一下“同源策略”...

  • SpringBoot2.x整合CORS解决跨域问题

    跨域问题系列文章 1. 同源策略与CORS(跨域请求的起源)2. SpringBoot2.x整合CORS解决跨域问...

网友评论

      本文标题:同源与跨域(二)

      本文链接:https://www.haomeiwen.com/subject/ydsslftx.html