【问题标题】:Chrome Extension: Possible to Inject External JavaScript in Secured Pages?Chrome 扩展:可以在安全页面中注入外部 JavaScript?
【发布时间】:2014-03-23 00:52:21
【问题描述】:

我整天都在拉头发。

我正在为 Facebook 创建一个工具。

我正在尝试将远程 Javascript 注入我的 Chrome 扩展程序。

它似乎可以在所有其他网站上运行,除了 Facebook.com,因为 http 协议是安全的:HTTPS

当我浏览其他不使用 HTTPS 的网站时,脚本被注入

是否可以注入外部 javascript 来为安全站点提供动态内容?

我正在使用以下代码注入外部js:

app.js(扩展的一部分)

加载以下内容:

chrome.tabs.executeScript(tabId, {file: "js/loadexternal.js"});

然后 /js/loadexternal.js 执行以下操作:

var s = document.createElement('script');
s.type = 'text/javascript';
s.src ='https://www.website.com/loader.js?client=tacx';
document.getElementsByTagName('head')[0].appendChild(s);

请注意:我还从安全 (HTTPS) 服务器加载远程脚本。 没用!

每当我不在安全页面上时,它都会加载 loader.js 文件...

但它没有在 Facebook 上加载,它似乎总是使用 HTTPS 协议。

请帮助我。谢谢。

PS> 是否可以在我的 FB 工具扩展中显示动态编译的结果?

【问题讨论】:

    标签: javascript google-chrome https external


    【解决方案1】:

    如果您查看 facebook 页面上的 HTTP 响应标头,您将看到以下行:

    content-security-policy: default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net *.atlassolutions.com;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net https://fb.scanandcleanlocal.com:* *.atlassolutions.com http://attachment.fbsbx.com https://attachment.fbsbx.com;
    

    Facebook 有一项安全策略,不允许来自不属于此列表的域的脚本,因此我认为您无法从您的扩展程序加载外部脚本。

    如果该标头不存在,您通常可以包含托管在 https:// 协议上的脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多