首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从iFrame重定向父窗口在Safari中不起作用

是因为Safari浏览器对于跨域的iFrame重定向有一些限制。这是由于浏览器的同源策略所导致的安全限制。

同源策略是一种安全机制,它限制了一个网页中的脚本只能访问来自同一源的内容。同源是指协议、域名和端口号都相同。当iFrame中的内容和父窗口的域名不同时,就会触发跨域问题。

在Safari中,由于同源策略的限制,iFrame中的脚本无法直接访问父窗口的内容,包括重定向父窗口。这是为了防止恶意网站通过iFrame欺骗用户,进行一些不安全的操作。

解决这个问题的一种方法是使用postMessage API。postMessage允许不同窗口之间进行安全的跨域通信。通过在iFrame中使用postMessage向父窗口发送消息,父窗口可以接收到消息并进行相应的处理,包括重定向操作。

另外,如果你需要在Safari中实现iFrame重定向父窗口的功能,可以考虑使用其他方法,如使用服务器端的重定向或者在iFrame中嵌入一个按钮,通过点击按钮来触发父窗口的重定向操作。

总结起来,在Safari中iFrame重定向父窗口不起作用是由于浏览器的同源策略限制所导致的。可以通过postMessage API或其他方法来实现跨域通信和重定向操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jquery基础(七) window.parent与window.openner区别

window.top.location.href"是最外层的页面跳转 二、举例说明: 如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果Djs这样写..._parent:窗口执行重定向 _self:自身页面重定向 _top:第一个窗口重定向 小结: 1.window.open("Url地址","_blank") = window.open(..."Url地址");//窗口打开 2.location = window.location = location.href = window.location.href =self.location.href...:窗口对象 top.window:第一个窗口的对象 三、重点看看window.parent与window.openner区别 window.parent 是iframe页面调用页面对象,当我们想从...iframe内嵌的页面访问外层页面是可以直接利用window.parent获取; 例子如下: A.html 页面

1.4K20

Safari URL重定向漏洞(CVE-2016-4585)利用分析

一些XSS攻击Safari下是受限的: ? Safari的XSS过滤机制对Host头反射型同样生效。当然下面的这种情况是可以触发XSS的。 ?...想到的最好的利用方法便是iframe了,我们可以找个header"X-Frame-Options"限制宽松的站进行测试。 原作者的示例如下: ?...我们发现经过一系列混淆,浏览器会加载以iframe页面为baseURL的资源,导致了加载错误。 同样我也在线上验证了这种情况: ? 同理,相对路径加载资源导致这种情况。...可以使用GET 和 POST的HTTP请求方法,使用302或者307进行跳转 iframe,base URL继承自页面,奇怪的是至今<base href=被完全忽略了 JS是blank域下执行的...,与iframe页面分离,除了cookie,DOM对象皆可访问 CSP (或者 X-Frame-Options) 可能会防止此XSS攻击 0x02 修复建议 升级Safari至 2016 年 7 月

1.4K70
  • Web窗口通讯方式及使用(postMessageMessageChannelBroadcastChannel)

    较早的版本,不同域下的 Safari 浏览器确实存在 postMessage 方法的限制。 这是由于同源策略的限制,该策略主要限制了一个页面加载的文档或脚本如何与来自另一个域的资源进行交互。... Safari 14 开始,Safari 浏览器已经开始支持跨域的 postMessage 方法。...而在iframe内部,可以通过window.parent来访问页面的window对象。 主页面 <!...; // iframe1 接收来自 iframe2 的消息 port1.onmessage = function(event) { console.log('iframe1...BroadcastChannel 提供了一种实时消息广播机制,适用于以下场景: 同一域名下的多个窗口、标签页或 iframe 之间进行实时消息广播。 多个浏览器窗口之间共享状态或通知状态变化。

    1.5K10

    窗口中打开页面?小心有坑!

    回到例子1,可以自己动手尝试,新打开的那个页面,打开console, 输入opener,可以看到这个对象,正是打开本页面的页面的窗口对象。...例子1就是利用这个方式,将窗口的链接悄悄地替换成了钓鱼页面的地址。刚好窗口的原始页面没有做防止被iframe嵌入,可以简单地通过iframe做一个极真实的钓鱼页面。...如果不看url根本区分不出来是钓鱼页面(窗口刚打开的时候好好的,谁会关注到这个url居然悄悄地变了呢?) 3.2 性能问题 除了安全问题,例子2还展示了简单地窗口中打开页面的性能问题。...例子2,新页面中有一个定时器,每隔一段时间就有一个持续的循环,这个循环阻塞新页面本身的js线程的同时,也阻塞了opener(也就是打开新页面的窗口)里的js线程。...外,所有浏览器的安全问题,无法解决性能问题 4.3 新建Iframe打开新窗口,然后关掉iframe 特点: 可解决safari下的安全问题,无法解决性能问题 4.4 推荐方案 如果是a标签要在新窗口中打开

    4K10

    窗口中打开页面?小心有坑!

    回到例子1,可以自己动手尝试,新打开的那个页面,打开console, 输入opener,可以看到这个对象,正是打开本页面的页面的窗口对象。...例子1就是利用这个方式,将窗口的链接悄悄地替换成了钓鱼页面的地址。刚好窗口的原始页面没有做防止被iframe嵌入,可以简单地通过iframe做一个极真实的钓鱼页面。...如果不看url根本区分不出来是钓鱼页面(窗口刚打开的时候好好的,谁会关注到这个url居然悄悄地变了呢?) 3.2 性能问题 除了安全问题,例子2还展示了简单地窗口中打开页面的性能问题。...例子2,新页面中有一个定时器,每隔一段时间就有一个持续的循环,这个循环阻塞新页面本身的js线程的同时,也阻塞了opener(也就是打开新页面的窗口)里的js线程。...外,所有浏览器的安全问题,无法解决性能问题 4.3 新建Iframe打开新窗口,然后关掉iframe 特点: 可解决safari下的安全问题,无法解决性能问题 4.4 推荐方案 如果是a标签要在新窗口中打开

    5.3K21

    【前端安全】JavaScript防http劫持与XSS

    页面被嵌入 iframe 重定向 iframe 先来说说我们的页面被嵌入了 iframe 的情况。...这种情况还比较好处理,我们只需要知道我们的页面是否被嵌套在 iframe ,如果是,则重定向外层页面到我们的正常页面即可。 那么有没有方法知道我们的页面当前存在于 iframe 呢?...window.top 返回窗口体系的最顶层窗口的引用。...两个属性分别可以又简写为 self 与 top,所以当发现我们的页面被嵌套在 iframe 时,可以重定向级页面: if (self !...没有,我们虽然重定向页面,但是重定向的过程,既然第一次可以嵌套,那么这一次重定向的过程页面也许又被 iframe 嵌套了,真尼玛蛋疼。

    3.3K40

    Web Security 之 Clickjacking

    而点击劫持无法则通过 CSRF token 缓解攻击,因为目标会话是真实网站加载的内容建立的,并且所有请求均在域内发生。...由于 GET 参数 URL ,那么攻击者可以直接修改目标 URL 的值,并将透明的“提交”按钮覆盖诱饵网站上。 Frame 拦截脚本 只要网站可以被 frame ,那么点击劫持就有可能发生。...当 iframe 的 sandbox 设置为 allow-forms 或 allow-scripts,且 allow-top-navigation 被忽略时,frame 拦截脚本可能就不起作用了,因为...例如,攻击者可能希望诱骗用户零售网站购买商品,而在下单之前还需要将商品添加到购物篮。为了实现这些操作,攻击者可能使用多个视图或 iframe ,这也需要相当的精确性,攻击者必须非常小心。...(比如,Chrome 76 或 Safari 12 不支持 allow-from)。

    1.6K10

    看我如何窃取Messenger.com用户登录认证随机数并获得15000美元漏洞赏金

    研究如何窃取用户安全随机数 初步分析 在此类基于随机数认证登录的情况,一般会存在一个参数使用户当前网站重定向到另一个已添加登录应用的网站,所以,我首先从这里入手检查它的安全严谨性。...,使用户完成Messenger到Facebook跳转,在此过程,其重定向区域(/login/fb_iframe_target/)不允许更改或添加任何字符串请求,但是,经测试发现,可以登录链接添加一个...而且,Messenger跳转到Facebook的过程中使用了302重定向。 302重定向:(302 redirect)指的是当浏览器要求一个网页的时候,主机所返回的状态码。...修复措施 Facebook首先的修复措施是重定向URL阻断了#符号的加入,但是,这种方式可以通过以下链接被绕过: https://www.facebook.com/login/messenger_dot_com_iframe...添加到链接https://www.facebook.com/login/messenger_dot_com_iframe/的#发生重定向之后,会被添加到链接https://fb.beta.messenger.com

    2.5K50

    利用 target=_blank 进行前端钓鱼

    场景:浏览某个网站,随后打开了新窗口,结果这个新窗口神不知鬼不觉地把原来的网页地址改了(重定向到一个仿冒网页)。等你回到那个钓鱼页面,已经伪装成登录页,要求输入登录凭据。...你可能不会注意到这一点,因为焦点位于新窗口中的恶意页面上,而重定向发生在后台。...稀里糊涂把账号密码输进去了~ parent 与 opener 中提供了一个用于父子页面交互的对象 window.parent,我们可以通过该对象来框架的页面访问级页面的 window...新打开的窗口,可直接使用 window.opener 来访问来源页面的 window 对象 浏览器提供了完整的跨域保护,域名相同时,parent 对象和 opener 对象实际上就直接是上一级的 window...这个 global 对象仅提供非常有限的属性访问,并且在这仅有的几个属性,大部分也都是不允许访问的。

    1.2K20

    iFrameFrame嵌入Silverlight时自适应高度的处理

    iFrame如果嵌入的是普通网页,这种场景下的iframe高度自适应解决方案,百度一下随手都能找到一大把。...但是嵌入Silvelight时,嵌入iframe页面默认不知道Silverlight内容的真实高度,所以上述办法就不起作用了。...其实只要换个思路:既然页面不知道iframeSL的高度,SL难道不能自己主动向页面汇报自已的高度吗? 先看最终的效果: ? ? ?...注:Page1,Page3均是SL的UserControl 代码见下面的源代码: 主要步骤为 1、SL每个页面的Page_Loaded,通过与页面的js交互,主动报告当前SL页面的高度 2、页面得到高度后...,用js动态调整iFrame/Frame的高度 示例源代码:http://files.cnblogs.com/yjmyzz/SL_Iframe_Height_Sample.7z

    53020

    Web前端学习笔记之前端跨域知识总结

    iframe框架是不同域的,所以我们是无法通过页面书写js代码来获取iframe的东西的: function test()...可取得子窗口的 window 对象 } 页面http://damonare.cn/b.html 也设置document.domain: <script type="text...0x03 通过location.hash跨域 因为<em>父</em><em>窗口</em>可以对<em>iframe</em>进行URL读写,<em>iframe</em>也可以读写<em>父</em><em>窗口</em>的URL,URL有一部分被称为hash,就是#号及其后面的字符,它一般用于浏览器锚点定位...传送数据到a.html,由于两个页面不在同一个域下IE、Chrome不允许修改parent.location.hash的值,所以要借助于<em>父</em><em>窗口</em>域名下的一个代理<em>iframe</em> b.html下创建一个隐藏的..."http://www.google.com/iframe.html"> iframe.html 设置好了 window.name 为我们要传递的字符串。

    1.1K30

    iframe的高度自适应_div自适应高度

    传统做法大致有两个: 方法一,每个被包含页本身内容加载完毕之后,执行JS取得本页面的高度,然后去同步页面的iframe高度。...方法二,主页面iframe的onload事件执行JS,去取得被包含页的高度内容,然后去同步高度。...我做了测试,同时开5个窗口(IE6、IE7、FF、Opera、Safari)执行这个代码,不会对CPU有什么影响,甚至调整到2ms,也没影响(基本维持0%占用率)。...如果你演示Demo后,会发现,除了IE,其他浏览器,当层展开后再隐藏,取到的高度值还是维持展开的高度303,而非隐藏回去的真正值184,就是说长高了之后缩不回去了。...这个值,实际应用决定,足够矮但又不能太矮,否则在FF等浏览器里会有很明显的闪烁。DOM操作的时候主页面无法监听到,只能DOM操作完了之后把高度变小了。

    7K40

    记录工作遇到的各种问题(Bug,总结,记录)

    页面中有iframeiframe里面有分页按钮,页面对iframe做加载之后监听iframe中点击事件的操作,初始第一页正常,但点击第二页之后事件就失效了 原代码: ?...iframe的预览pdf文件时,有时embed元素未占满整个iframe,而是正好一半,一半 ? ?...Chrome开发者工具打开开发者工具(Inspect in DevTools) 其实Chrome开发者工具就像是一个iframe,嵌入到页面,也是可以审查的 首先打开DevTools至独立窗口中,...然后该独立窗口的DevTools中使用快捷键(如Ctrl+Shift+J)打开即可 ?...入口主要是这个文件 当然,也可以不下载,直接使用mozilla提供的来使用,不过需要解决一下跨域问题 60. iframe 的 visibility hidden属性safari失效 一个bug,解决办法是用

    18.1K12

    网页如何嵌套网页__HTML框架

    通过使用html框架,可以一个浏览器窗口中展示多个页面。也就是一个html文件可以引入多个html文件。在网页框架使用比较少,但我们还是需要了解下。...方式1:iframe 使用iframe标签来实现。具体的属性及意义: src 指向不同的网页,也就是html文件路径。 width height 用来设置iframe引入网页的宽高大小。... 方式2:frame 标签定义一个frameset中一个特定的窗口(框架)。...特别注意不能与body同时使用,否则不起作用。 frameset标签具体的属性及意义: cols 设置框架列的数目和尺寸,使用逗号分开。 rows 定义框架中行的数目和尺寸,使用逗号分开。...noresize 规定无法调整窗口大小。 frame 的src设置了引入窗口文档的地址。

    9.3K50

    网页如何嵌套网页__HTML框架

    通过使用html框架,可以一个浏览器窗口中展示多个页面。也就是一个html文件可以引入多个html文件。在网页框架使用比较少,但我们还是需要了解下。...方式1:iframe 使用iframe标签来实现。具体的属性及意义: src 指向不同的网页,也就是html文件路径。 width height 用来设置iframe引入网页的宽高大小。... 方式2:frame 标签定义一个frameset中一个特定的窗口(框架)。...特别注意不能与body同时使用,否则不起作用。 frameset标签具体的属性及意义: cols 设置框架列的数目和尺寸,使用逗号分开。 rows 定义框架中行的数目和尺寸,使用逗号分开。...noresize 规定无法调整窗口大小。 frame 的src设置了引入窗口文档的地址。

    12.9K30

    iframe怎么将参数传递给vue 组件

    子页面的iframe想将参数传递给Vue组件,可以使用postMessage()方法将数据发送给窗口组件可以通过监听message事件来接收并处理这些数据。...将参数从子页面的iframe传递给Vue组件: 子页面的iframe: // 发送消息给窗口 const data = { imgUrl: '......组件处理数据 // ... } } Vue组件,通过mounted()钩子监听message事件,可以获取子页面iframe发送的消息。...Vue组件销毁之前,需要使用beforeDestroy()钩子将事件监听器message事件移除,以避免潜在的内存泄漏或错误。...接收到iframe发送的参数后执行某些特定的逻辑,可以handleMessage方法添加相应的判断语句。使用条件语句(如if语句)来检查接收到的参数,并根据不同的条件执行不同的操作。

    1.3K20

    跨域方法汇总

    浏览器,、、 和 这几个标签是可以加载跨域(非同源)的资源的,并且加载的方式其实相当于一次普通的 GET 请求,唯一不同的是,为了安全起见,浏览器不允许这种方式下对加载到的资源的读写操作...302 重定向响应,把结果重新指回 A 域; 在此 iframe 内部再嵌套一个指向 A 域的 iframe。...使用它向其它窗口发送消息的调用方式如下: otherWindow.postMessage(message, targetOrigin); 接收的窗口,需要设置一个事件处理函数来接收发过来的消息: window.addEventListener...Fragment Identitier 就是 URL 的井号(#)后面的经常用于锚点定位的部分,这部分的改变不会导致页面刷新,母窗口可以随便访问 iframe 的 URL,而 iframe 也可以随便访问母窗口的...,指向异域,处理完以后,这个 iframe 的 URL 的 Fragment Identitier 包含了处理结果,供母页面访问,而浏览器的 URL 没有任何变化。

    59210
    领券