【问题标题】:Browser is blocking my jquery浏览器阻止了我的 jquery
【发布时间】:2017-03-29 01:42:20
【问题描述】:

所以我不知道为什么,但我从 Chrome 收到一条错误消息。

错误信息:

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“default-src 'self' data: gap: https://ssl.gstatic.com'unsafe-eval'”。启用内联执行需要“unsafe-inline”关键字、哈希(“sha256-TakXxMuCq+J+ccgIY6WUXR+xy3/BdgRbqG7Y1mNRWJQ=”)或随机数(“nonce-...”)。另请注意,'script-src' 未显式设置,因此 'default-src' 用作后备。

jQuery:

<script type="text/javascript">
  $( document ).ready(function() {

    $.ajax({
      type:'GET',
      url:'http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=440&count=3&maxlength=300&format=json'
      success: function(data){
        console.log('success',data);
      }
    });
  });
</script>

对不起,如果这是一个重复的问题。
我只是很难找到问题的答案。
但是有人可以解释为什么我会收到我收到的错误消息吗?

我想提供一些额外的信息,以便您了解我的情况。
我正在用 HTML 编写一个应用程序。
除了 JSON 之外,HTML 中使用的所有文件都来自我的机器。
我没有从包括xampp 在内的任何服务器运行它们。我只是双击了我的 HTML 文件。

【问题讨论】:

  • 如果您的页面使用 https 服务,那么您的所有脚本都需要使用 https...?您确实包含了 script src="jQueryFile.min.js"> 对吗?
  • 感谢您的回复。我使用的所有文件都没有托管在任何服务器上,而是托管在我的本地计算机上。顺便说一句,我没有使用像 xampp 这样的东西。
  • 在关闭 &lt;body&gt; 标记之前直接放置一个 &lt;script&gt; 元素。在里面直接粘贴jquery代码。
  • 我做了,但没有解决问题

标签: javascript jquery google-chrome


【解决方案1】:

您正在编写 Chrome 扩展程序吗?您的问题尚不能立即明确,但我希望在那里找到此错误消息。

内联script 标签不被扩展执行。谷歌Content Security Policy pages 状态:

内联 JavaScript 将不会被执行。此限制禁止两者 内联 &lt;script&gt; 块和内联事件处理程序(例如 <button onclick="...">)。

第一个限制消除了一大类跨站点脚本 通过使您无法意外执行脚本来进行攻击 由恶意第三方提供。但是,它确实要求您 编写代码时将内容和行为明确分开 (你当然应该这样做,对吧?)。

不过有办法放宽这个政策

从 Chrome 46 开始,可以通过指定 策略中源代码的 base64 编码哈希。这个哈希必须 以使用的哈希算法(sha256、sha384 或 sha512)作为前缀。看 以Hash usage for &lt;script&gt; elements 为例。

【讨论】:

  • 感谢您的回复,我还不够清楚。我将更新问题以使其更清楚。我正在用html编写一个应用程序。我试图对 json 文件进行 ajax 调用。我在本地机器上运行代码。我没有使用 xampp 或类似的东西,我只是在我的机器上运行了安全的 html。
猜你喜欢
  • 2019-11-09
  • 2012-04-16
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2015-05-05
  • 1970-01-01
相关资源
最近更新 更多