在 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 没有被禁用。
我想要一个带有 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 没有被禁用。