Chrome加载项会触发内容安全策略违规

时间:2014-04-12 02:57:27

标签: javascript google-chrome github google-chrome-extension

Chrome加载项会触发内容安全策略违规

最近,我开始开发一个chrome插件,它会在GitHub个用户个人资料中注入一个按钮。该插件旨在在GitHub用户配置文件上注入KeyBase按钮,该配置文件与KeyBase用户配置文件相对应,如图所示。

KeyBase Button Example

我的主要代码是用JavaScript编写的,可以在以下链接找到:

https://gist.github.com/psgs/10516497

我的manifest.json文件也如下:

https://gist.github.com/psgs/10516524

当代码作为chrome附加组件的一部分运行时,以下错误在JavaScript控制台中发送垃圾邮件,按下时,KeyBase按钮不会将用户链接到用户的KeyBase配置文件。

JavaScript Console Error

对于为什么会出现这些错误的任何见解都会非常感激!!

还可以在GitHub Issues page for the KeyBase Button repository找到更多信息。

1 个答案:

答案 0 :(得分:1)

我尝试运行您的代码,但无法从屏幕截图中重现错误。基本上按钮注入正常,但是当我按下它时我得到了:

  

XMLHttpRequest无法加载https://www.keybase.io/psgs。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“https://github.com”访问。 PSGS:1   AJAX错误github-a1fec3e73d87f3550c635e371c8519308940f4b4.js:1

以下是我的想法:

  • 当点击按钮时,GitHub javascript代码捕获事件并转换为某种Ajax请求。
  • 此请求不起作用,因为www.keybase.io不允许来自不同来源的请求。

您可以尝试将我们的click处理程序添加到按钮,这将停止事件冒泡到GitHub处理程序,如下所示:

button
    .attr('href', 'https://www.keybase.io/' + username)
    .html('<span class="octicon octicon-key"></span>Keybase')
    .click(function() {window.location = 'https://www.keybase.io/' + username})

无论如何,你想要达到的目标还不是很清楚。