【问题标题】:The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "chrome-extension". Protocols must match请求访问的帧具有“https”协议,被访问的帧具有“chrome-extension”协议。协议必须匹配
【发布时间】:2020-12-06 23:52:21
【问题描述】:

Uncaught SecurityError: Blocked a frame with origin "brickseek.com" 从访问来源为“chrome-extension://id”的框架。框架 请求访问具有“https”协议,被访问的帧 有一个“chrome-extension”协议。协议必须匹配。

我在尝试替换 p 标记中的文本时遇到问题。我尝试了几种方法来通过 id 获取元素并替换文本但没有运气。我不明白这个安全错误告诉我什么,因为我已经将 iframe 注入到网站中,但是当试图操纵它时,程序认为它属于网站。我真的需要帮助为学校解决这个问题。

我在其中创建 iframe 的 Content.js

var iframe  = document.createElement ('iframe');
iframe.src  = chrome.extension.getURL ('iframe.html');
var topview = document.getElementById('sidebar-content');
topview.parentNode.insertBefore(iframe, topview)

我注入的 iframe.html

<div>
    <p id="title">Tom Clancy</p>
</div>

我试图操纵 iframe 的内容:

iframe.getElementById('title').innerHTML = "Harry Potter";

和

iframe.contentWindow.getElementById('title').innerHTML = "Harry Potter";

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    您似乎在https://brickseek.com 托管此代码。

    但是,这行代码:

    chrome.extension.getURL ('iframe.html');
    

    似乎将 iframe src 设置为“chrome-extension://id”之类的东西

    (我对 Chrome 扩展程序没有太多经验,但它们似乎与问题无关。)

    错误是说您不能将不同协议 (chrome-extension://) 上的文档 iframe 到 iframe 出现的页面 (https://)。它们都必须是 https://

    尝试将您的 iframe.html 托管在同一台服务器上,然后使用

    简化您的代码
    iframe.src = "/iframe.html"
    

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 2013-09-23
      • 2013-06-13
      • 1970-01-01
      • 2013-01-28
      • 2013-05-28
      • 2017-12-25
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多