gpt4 book ai didi

javascript - 当使用 window.open 打开页面时,打开的页面如何允许打开器访问其内容?

转载 作者:行者123 更新时间:2023-11-30 00:03:15 24 4
gpt4 key购买 nike

使用 window.open 打开的页面是否有可能允许跨域开启器检查自身? (这是用于内部应用程序,因此安全性不是一个重要问题。)如果是这样,怎么做?我已经尝试替换我能找到的所有 CORS 和同源策略,但我仍然在子窗口的所有属性上得到 Access Denied

特别是我正在尝试使用 Internet Explorer 11

标题

这些是我到目前为止尝试过的所有 header

Access-Control-Allow-Origin: http://web1.corp.local
Access-Control-Allow-Credentials: true
Access-Control-Expose-Headers: Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma
Access-Control-Expose-Methods: GET,POST,OPTION,PUT,DELETE,HEAD
X-Content-Security-Policy: default-src *;script-src *
Content-Security-Policy: default-src *;script-src *
X-XSS-Protection: 0
X-Permitted-Cross-Domain-Policies: all

我正在尝试做什么......

我希望 web1.corp.localweb2.corp.local 的页面上执行一些 JavaScript。我控制两个域;我只是让 web2 告诉浏览器它可以让 web1 读取和执行 web2 上的东西。

请求 http://web1.corp.local

我正在尝试从打开器调用打开的窗口上的 javascript 函数。

document.domain = "corp.local";
var web2 = window.open('http://web2.corp.local');
web2.document; //Throw "Access Denied"
web2.MyApp; // undefined

http://web2.corp.local 上的 Javascript

document.domain = "corp.local";
var myapp = window.MyApp = {
doWork: function() {
alert('Hello World!');
}
};

注意:我有一个使用 iframe 代理和 window.postMessage 的解决方案,但托管在 web2 上的应用无法正常工作在 iframe 中。

更新:问题是这两个页面没有使用 document.domain,我错过了打开窗口中的异常。

最佳答案

问题是 document.domain。第二个站点与第一个站点不在同一个域中。一旦我更改了 web1 的 FQDN 并使用 document.domain = corp.local 问题就解决了。

我错过了 document.domain 上的一个 javascript 文件抛出的异常。

关于javascript - 当使用 window.open 打开页面时,打开的页面如何允许打开器访问其内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39456825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com