在 Chrome 或 Firefox 中禁用 cross-origin 框架

Disable cross-origin frame in Chrome or Firefox

我想要一个带有 iframe http://localhost:8080 的网络扩展。所以我可以测试我的选项页面。我想访问扩展 API。所以我不关心开发的安全性。

所以做了一个页面

chrome-extension://abcdefghijklmnopqrstuvw/page/index.html

<html>
<body>
<iframe id="myFrame" src="http://localhost:8080" crossorigin="anonymous">
</iframe>
<script src="script.js"></script>
</body>
</html>

localhost:8080

<html>
<head>
</head>
<body>
<h1>I can't get this working :{</h1>
<script>
    console.log(parent);
</script>
</body>
</html>

我也发一个header: "Access-Control-Allow-Origin": "*"

当然我得到了这个错误:

DOMException: Blocked a frame with origin "http://localhost:8080" from accessing a cross-origin frame.

我试图禁用网络安全

google-chrome-stable --disable-site-isolation-trials --disable-web-security --user-data-dir="~/tmp"

但是错误依然存在。我还尝试 web-ext 禁用网络安全。

我做了一个简单的设置来测试我是否可以从另一个来源访问父对象。所以我有 http://localhost:1111 和一个 iframe http://localhost:2222。现在 :2222 正在调用 parent.testAlert(),在普通浏览器中,由于启用了安全性,这将被阻止。但是当我禁用安全性时,我可以访问 parent.testAlert()。

<html>
<body>
One <br>
<script>
    function testAlert() {
        alert("Yes");
    }
    setTimeout(() => {
        console.log("window ", window.name);
    }, 1000)
</script>
<iframe src="http://localhost:2222"></iframe>
</body>
</html>
<html>
<body>
Two
<script>
    console.log("two: ");
    console.log("parent ", parent);
    parent.testAlert()
</script>
</body>
</html>

这仅在我禁用安全性时有效,例如:

google-chrome-stable --disable-web-security --user-data-dir=~/tmp --disable-site-isolation-trails

不错。

现在让我们尝试使用 chrome-extension:// url...

<html>
<body>
page.html
<iframe src="http://localhost:2222"></iframe>
</body>
</html>

我仍然得到同样的错误:

(index):7 Uncaught DOMException: Blocked a frame with origin "http://localhost:2222" from accessing a cross-origin frame.
at console.log (<anonymous>)
at http://localhost:2222/:7:13

似乎 chrome-扩展 CORS/SOP 没有被禁用。

我做了一个简单的例子https://github.com/zoutepopcorn/iframe-blocked