javascript - 使 jQuery 库在 Facebook.com 域中可用

标签 javascript jquery security dom inject

好的。我只是想在 Facebook.com DOM 元素中使用 jQuery 库。实际上,Facebook 并没有使用 jQuery。因此,我尝试在 JS 代码段下方注入(inject),以使 jQuery 可用于该页面。

var jq = document.createElement('script');
jq.src = "//code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);

setTimeout(function () {
       $jq = jQuery.noConflict();
    }, 5000);

但是,我无法在任何浏览器中使用任何“jQuery”功能。 $ 已从 facebook 定义,我收到了 jQuery$jq 等变量的错误。上面的代码适用于其他网站,包括 Google.com

在 Chrome 中,它也会在 facebook.com 上给出以下错误。

Refused to load the script 'https://code.jquery.com/jquery-latest.min.js' because it violates the following Content Security Policy directive: "script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* 'unsafe-inline' 'unsafe-eval' *.akamaihd.net *.atlassolutions.com blob: chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl".

有人遇到过这个问题吗?请分享。提前致谢。

注意:我可以通过将整个代码粘贴并执行到控制台来利用 jQuery 功能,但我需要知道导致此问题的原因和任何替代解决方案(如果有的话) ).

最佳答案

您面临的问题是内容安全策略 header 。这允许仅使用来自页面本身的 HTTP header 中提供的白名单站点的脚本。您可以在 HTML5Rocks 上阅读更多有关其工作原理的信息。 .

没有办法绕过此政策:Facebook 使用它来防止人们被说服(请参阅“社会工程”)执行任意 Javascript 代码,从而使其他人可以访问他们的帐户。

最好的解决方案不是使用 jQuery 库,而是使用 native Javascript 来进行操作。

关于javascript - 使 jQuery 库在 Facebook.com 域中可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825812/

相关文章:

javascript - 我无法连接到 javascript mqtt 服务器

javascript - 将验证集成到 jQuery 函数中

java - 使用 JavaEE 的 SOAP 自定义身份验证

javascript - 离线网络应用程序中的安全用户身份验证

java - 在 Java 应用程序中多次添加安全提供程序

javascript - AngularJS:从 ng-include 访问绑定(bind)对象

javascript - 如何使用 Array 方法缩短 JSX 代码?

javascript - 如何将变量添加到 $.ajax({ url : ""});

jQuery Ajax 上传,必须单击按钮两次?

javascript - 如何使用 "and"或 "or"的过滤器