V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
wico97
V2EX  ›  JavaScript

top.location.href 可以跨域跳转吗

  •  
  •   wico97 · 2017-06-24 23:25:08 +08:00 · 4645 次点击
    这是一个创建于 2736 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果在 iframe 页面里使用 top.location.href, 不同域的情况下能让 top 页面发生跳转吗

    10 条回复    2017-06-26 10:15:03 +08:00
    lslqtz
        1
    lslqtz  
       2017-06-24 23:33:10 +08:00
    href 应该可以跨域吧。。iframe 跨域跳转了数据就不知道了
    gamexg
        2
    gamexg  
       2017-06-25 00:13:08 +08:00
    可以,为了防止被人嵌套就是用这个做强制跳转的。
    wico97
        3
    wico97  
    OP
       2017-06-25 00:39:18 +08:00
    @gamexg http://jsfiddle.net/ppkzS/ 请问这个为啥不起作用
    gamexg
        4
    gamexg  
       2017-06-25 01:03:29 +08:00
    我的错误,top.location 已经在去年被禁用了。

    https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/Xi8-y4ySjA4/dc4BFfqyBQAJ
    wico97
        5
    wico97  
    OP
       2017-06-25 05:28:44 +08:00
    @gamexg 还有其他方法来实现 top.location.href 的功能吗
    codehz
        6
    codehz  
       2017-06-25 10:05:29 +08:00 via Android
    @wico97 用 postMessage 手动传消息,然后最外层页面处理。。。这个保证可以跨域
    wico97
        7
    wico97  
    OP
       2017-06-25 16:17:17 +08:00
    @codehz 但如果我的本意不想让别人 iframe 我的网站,最外层不会处理我的请求呀。postMessage 只适合于我有权限修改最外层的代码的情况
    codehz
        8
    codehz  
       2017-06-25 16:24:41 +08:00
    @wico97 #7 别人也不让想你改地址啊。。。。
    SakuraKuma
        9
    SakuraKuma  
       2017-06-26 09:09:22 +08:00   ❤️ 1
    既然只是想别人不 iframe 自己,为何不 top.window === window 判断呢?
    codehz
        10
    codehz  
       2017-06-26 10:15:03 +08:00 via Android
    @wico97 话说除了 9 楼的方案,还可以在响应头里加上 X-Frame-Options: SAMEORIGIN 来解决,当然最好是双管其下,因为两种方案都有绕过的可能性,9 楼的方案可以通过禁止 iframe 脚本加载来绕过。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.