j通知不在Chrome上使用facebook

时间:2012-12-15 11:06:03

标签: jquery bookmarklet

jQuerify是一个小书签,用于为当前显示的网页添加jquery支持。 请查看此页面:http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet/

此演示让我知道是否已经下载了jquery,如果没有,则加载它,然后显示活动版本。 我的问题是:在使用谷歌浏览器浏览时,某些页面上没有显示任何内容,例如facebook,google(不是缓存页面,而是页面结果) 使用IE时,它正在使用这些页面。

我尝试在Chrome上断开用户google会话,但我仍然遇到问题。 我以为它是由https网址引起的。但在确认“显示所有内容”后,它在IE中显示正常。

Chrome可能存在配置错误? 有没有针对jQuerify的修复,还是应该放弃并找到另一个加载jquery和远程脚本的解决方案?

感谢您的建议。

1 个答案:

答案 0 :(得分:9)

在Google Chrome中,您可以在浏览器控制台中看到错误消息。

它说: 拒绝加载脚本'http://code.jquery.com/jquery.min.js',因为它违反了以下内容安全策略指令:“script-src https:// .facebook.com http:/ /.facebook.com https:// .fbcdn.net http:// .fbcdn.net * .facebook.net * .google-analytics.com * .virtualearth.net < em> .google.com 127.0.0.1: * .spotilocal.com:* chrome-extension:// lifbcibllhkdhoafpjfnlhfpfgnpldfl'unsafe-inline''unsafe-eval'https:// .akamaihd.net http :// .akamaihd.net”

这是因为Facebook实施了一个安全功能,该功能是使用HTTP标头“X-WebKit-CSP”实现的。

这就是为什么Facebook上的当前实施会影响在基于webkit的浏览器中加载外部脚本(Chrome和Safari) jQuerify bookmarklet在Firefox和IE上运行良好。

Chrome解决方案,您可以使用以下方法执行此操作:

  • 由于您可以在上面的详细信息中看到,因此支持127.0.0.1:*。只需在您的系统上运行一个简单的Web主机(例如:Apache Web服务器)。将jquery javascript文件复制到系统上的Apache链接目录中。现在可以使用类似http://127.0.0.1/jquery.js的路径访问此文件(注意:此处不要使用http://localhost/)。在jQuerify bookmarklet中,将jQuery文件的路径从http://code.jquery.com/jquery.min.js更改为http://localhost/jquery.js。现在书签可以正常工作。

OR

  • 将整个jQuery代码加载到bookmarklet中,这样它就不会加载外部脚本文件。不推荐使用,因为如果您希望通过jQuery文件进行调试,这对第一种方法没有帮助。