允许子iframe(跨站点)访问window.top
Allow a child iframe (cross site) access to window.top
我试图在iframe
中显示一个网站。iframe
url指向我公司内部托管的web服务器,尽管我无法控制它,并且是"跨站点",因为它具有与我网站不同的子域。此外,代码是由第三方公司维护的,需要很长时间才能对其进行更改……银行之类的!内容的创建者已经声明,无意阻止在iframe
中显示/运行网站。
我们将使用Cisco Finesse来"汇集"各种第三方和本地开发的web应用程序。(后台,Finesse使用apache shinging来托管"小工具")。在技术层面上,我希望在Finesse中显示一个url作为小工具,它最终使用iframe
来显示第三方页面。
到目前为止的问题是,在第三方页面上有一段代码试图访问window.top.location
,当然会抛出安全异常。下面是代码:
function someFunc() {
var toppage = window.top;
if (toppage.location.pathname.indexOf("default") == -1) {
return toppage;
}
return toppage;
}
页面url的形式,http://domain/default.aspx -只是一个标准的aspx默认页面,老实说,我不明白为什么这个检查正在以这种方式执行。
稍微调试后,我发现代码在几个地方使用,但没有明显的原因。ie。不需要真正的首页,在我看来,这是一些试图阻止"什么",但我不确定是什么,也不确定当前的维护者的网站。
我在一个小测试站点尝试了相同的代码,只是为了看到行为。如果我在路径名(不是跨站点)中托管一个带有"default"的站点,那么该函数的行为"如预期"(再次,我不确定期望是什么),并且该函数返回"toppage",从子iframe
内没有问题(请记住不要跨站点)。
我在net和stackoverflow周围看了很多,到目前为止,任何接近的东西都需要对第三方网站进行一些更改(我不能),但我也没有发现完全相同的情况。在这一点上,我很确定我无能为力,但在这里请大师们得到一些第二意见。
基本上我想知道是否有什么我能做的,甚至是一个黑客,允许iframe
访问window.top
?
当iframe
在不同的域名上时,您无法访问它的父级
虽然你可以用另一种方式解决这个问题:http://madskristensen.net/post/iframe-cross-domain-javascript-calls
假设:
- 站点A位于example.com或sitea.example.com
- 站点B位于foobar.com
要做到这一点,您需要创建一个子域,例如siteb.example.com。然后将新的子域指向foobar.com的IP地址。现在站点A和B位于example.com下。
然后将这行JavaScript添加到站点A和B:
document.domain = 'example.com'
这告诉浏览器,站点A和B属于位于example.com的应用程序,因此允许使用JavaScript进行通信。它可以通过调用window.parent.doSomething();
,现在同源策略原则已在两个站点上启用。
- JavaScript Window 对象始终可访问
- 访问子窗体的asp代码隐藏中的javascript window.myvariable
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- 在setInterval中访问window.event.altkey
- 我如何在angular($window).bind()中访问它
- 如何使用window.open()快速访问我的网站的根目录
- 如何在 Node 中访问模块全局变量.js例如浏览器中的 window.variable
- 有没有办法查看 window.top 是否可以访问
- 获取错误:在 JavaScript 中的 window.open() 函数上访问被拒绝
- 如何在Aurelia中访问Window&Document对象
- Javascript - 使用 window.open();访问另一个 HTML 文件
- 无法在 window.resize() 中访问对象的上下文
- TypeError: window.parent.updatepic 不是函数,当我尝试从 iframe 访问函数到他的
- 我该如何检查我是否可以访问window.opener
- 从iFrame/Window访问JavaScript中的父对象
- 访问Selenium WebDriver中的window.external函数
- 从嵌入的iframe访问window.parent
- 设置@grant值时如何访问“window”(目标页)对象
- 允许子iframe(跨站点)访问window.top
- 使用window.moveTo时拒绝访问