Отключить фрейм с перекрестным происхождением в Chrome или Firefox

Я хочу иметь расширение webextension с iframe http: // localhost:8080. Итак, я могу протестировать свою страницу с опциями. Я хочу получить доступ к API расширений. Так что я не забочусь о безопасности разработки.

Так сделал страницу

расширение хрома://abcdefghijklmnopqrstuvw/page/index.html

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

локальный:8080

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

Я также отправляю заголовок: "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, чтобы отключить веб-безопасность.

1 ответ

Я сделал простую настройку, чтобы проверить, могу ли я получить доступ к родительскому объекту из другого источника. Итак, у меня 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

Кажется, что хром-расширение CORS / SOP не отключено.

Я сделал простой пример https://github.com/zoutepopcorn/iframe-blocked