【问题标题】:Can't run JavaScript lines from popup无法从弹出窗口运行 JavaScript 行
【发布时间】:2015-08-22 23:37:07
【问题描述】:

当我尝试以弹出窗口的形式打开以下页面时,我遇到了以下消息:

拒绝加载脚本“http://allinternetfinance.com/LetMeKnow/jquery-1.11.2.js”,因为它违反了以下内容安全策略指令:“script-src 'self' 'unsafe-eval'

index.html:4 拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self' 'unsafe-eval'”。启用内联执行需要 'unsafe-inline' 关键字、哈希 ('sha256-anuyZ9J88P7xGyiuMhMfVwpc613qkiD1ZB3UusOLD6A=') 或随机数 ('nonce-...')。”

html 是:

<html>
<head>
    <script src="http://allinternetfinance.com/LetMeKnow/jquery-1.11.2.js";></script>
    <script>
    $( document ).ready(function() {
        window.location.replace("http://localhost:8080/MembershipApp/index.html");
    });
    </script>
</head>

<body>
</body>

我得到的只是白色的小方块,而不是我试图将其重定向到的页面。

【问题讨论】:

  • 你是从谷歌扩展运行这个吗?如果不是,那么它可能与某些 XSS HTTP 标头有关:seescript-src 'self' 表示只允许从与当前页面相同的src执行脚本

标签: javascript jquery html google-chrome-extension


【解决方案1】:

你需要先做两件事:

  • 下载 Jquery 并从您的扩展文件夹中加载它,或者根本不使用它。
  • 将 script 标签的内容移动到 .js 文件中并引用它。

https://developer.chrome.com/extensions/contentSecurityPolicy

此外,弹出窗口似乎必须包含扩展文件,而不是使用

chrome.tabs.create({ url: "http://localhost:8080/MembershipApp/index.html"})

【讨论】:

    【解决方案2】:

    请阅读 chrome 扩展的脚本注入。 Programmatic Injection for Chrome Extensions

    1. 您可能没有cross-origin permissions 进行扩展
    2. 您必须“注入”脚本或使用manifest declaration 才能使用它。这是由于现代浏览器的标头和“同源策略”作为一种安全措施。

    最后,确保将脚本注入到新创建的选项卡或现有选项卡中,不要在弹出窗口本身内执行脚本,否则它将在弹出框中执行如果它是它自己的窗口(除非那是你想要的。)

    编辑: 理想情况下,您需要下载另一张海报提到的 jquery 脚本,并将其托管在您的扩展程序中。确保将 jquery 库声明为 Web Accessible Resource,否则会出现另一个安全错误。

    希望这会有所帮助。

    JRad 坏人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多