javascript - Chrome 扩展程序 : Possible to Inject External JavaScript in Secured Pages?

标签 javascript google-chrome https external

我一整天都在扯头发。

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

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

它似乎适用于除 Facebook.com 之外的所有其他网站,因为 http 协议(protocol)是安全的:HTTPS

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

是否无法注入(inject)外部 JavaScript 来为安全站点提供动态内容?

我使用以下代码来注入(inject)外部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 上加载,而 Facebook 似乎始终使用 HTTPS 协议(protocol)。

请帮助我。谢谢。

PS> 有没有办法在我的 FB 工具扩展中显示动态编译的结果?

最佳答案

如果您查看 Facebook 页面上的 HTTP 响应 header ,您将看到以下行:

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 的安全策略不允许来自不属于此列表的域的脚本,因此我认为您无法从您的扩展程序加载外部脚本。

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

关于javascript - Chrome 扩展程序 : Possible to Inject External JavaScript in Secured Pages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22585668/

相关文章:

java - jodd http客户端如何设置忽略证书

javascript - 无法理解异步/等待和 promise 的工作

javascript - typescript 如何返回键类型

ruby-on-rails - 当我尝试使用 https 访问我的 Rails 站点时,为什么会出现 404 错误?

android - 通过 Chrome/Android 下载管理器挂起通过 HTTPS 下载文件

java - 根据历史记录 sqlite 中存储的数据在每个 chrome 选项卡/网站上花费的时间

javascript - 修复 "Load unsafe scripts"

javascript - 如何在播放视频时使页面变暗?

php - Firefox 不遵守 RFC6265 关于处理 cookie 的路径属性

javascript - Chrome 在不触发重绘的情况下合成图层