拒绝执行脚本,是否启用了严格的 MIME 类型检查?

IT技术 javascript json
2021-01-28 09:11:31

为什么我在控制台中收到此错误?

拒绝执行来自“ https://www.googleapis.com/customsearch/v1?key=API_KEY&q=flower&searchType=image&fileType=jpg&imgSize=small&alt=json ”的脚本,因为它的 MIME 类型(“application/json”)不可执行,并且启用了严格的 MIME 类型检查。

6个回答

您有一个<script>试图加载一些外部 JavaScript元素。

您给它的 URL 指向一个 JSON 文件,而不是一个 JavaScript 程序。

服务器正确报告它是 JSON,因此浏览器会因该错误消息而中止,而不是尝试将 JSON 作为 JavaScript 执行(这会引发错误)。


很可能这是因为您正在尝试发出 Ajax 请求,遇到了跨源错误,并试图通过告诉 jQuery 您正在使用 JSONP 来修复它。这仅在 URL 提供 JSONP(它是 JavaScript 的不同子集)时才有效,而这个没有。

不过,带有附加查询字符串参数的相同 URLcallback=the_name_of_your_callback_function确实会返回 JavaScript。

我现在给出了这个,它修复了错误 <script id="data" type="application/json"
2021-03-22 09:11:31
type="application/json" — 现在浏览器知道它不是在尝试加载 JavaScript,因此它完全忽略了脚本元素。
2021-04-05 09:11:31

在我的情况下,它是一个未找到的文件,我错误地输入了 javascript 文件的路径。

天才的回答。谢谢 :)
2021-04-02 09:11:31
相同。不正确的路径会导致一些错误的 html 页面响应,进而导致这个令人困惑的错误消息。
2021-04-14 09:11:31

这个结果是第一个在 google 中弹出的结果,比这里发生的更广泛。以下将适用于快速服务器

我试图从嵌套文件夹访问资源。

里面index.html我有

<script src="./script.js"></script>

静态路由安装在:

app.use(express.static(__dirname));

但是script.js位于嵌套文件夹中,如下所示:js/myStaticApp/script.js 拒绝执行脚本,启用了模因类型检查。 我只是将静态路由更改为:

app.use(express.static(path.join(__dirname, "js")));

现在它起作用了:)

如果您使用的是 Node.js,请尝试使用express.static()

您只需将保存静态资产的目录的名称传递给 express.static 中间件即可开始直接提供文件。例如,如果您将图像、CSS 和 JavaScript 文件保存在名为 public 的目录中,您可以执行以下操作:

即:app.use(express.static('public'));

这种方法解决了我的问题。

谢谢,

可能不是这个特定问题的正确答案,但它是我问题的解决方案。谢谢!
2021-04-09 09:11:31

搜索了一段时间后,我意识到我的 Windows 10 64 位中的这个错误与 JavaScript 相关。为了看到这一点,请转到您的浏览器 DevTools 并首先确认。就我而言,它显示了一个错误,如“MIME 类型(‘应用程序/javascript’)不可执行”。

如果是这种情况,我已经找到了解决方案。这是交易:

  1. https://github.com/jupyterlab/jupyterlab/issues/6098上借用用户“ilango100”

前一段时间我遇到了完全相同的问题。我认为这个问题是特定于 Windows 的。这是由于在 Windows 注册表中为 javascript 文件设置了错误的 MIME 类型。我通过使用正确的内容类型编辑 Windows 注册表解决了这个问题:

regedit -> HKEY_LOCAL_MACHINE\Software\Classes -> 您将看到每个文件扩展名的许多文件夹 -> 只需向下滚动到“.js”注册表并选择它 -> 在右侧,如果“内容类型”值不是应用程序/javascript,那么这就是导致问题的原因。右键单击内容类型并将值更改为 application/javascript

在此处输入图片说明

在浏览器中重试。”

在那之后,我意识到错误发生了变化。它甚至不再在浏览器中自动打开。但是,PGAdmin 将在侧栏上打开(靠近日历/时钟)。通过尝试直接在浏览器中打开(“新 PGAdmin 4 窗口...”),它也不起作用。

最终解决方案:单击“复制服务器 URL”并将其粘贴到浏览器上。它对我有用!

编辑:可能不需要复制服务器 URL,正如 Eric Mutta 在下面的评论中所解释的那样。

+1 这对我有用。我在注册表中进行了更改以application/javascript用于.js扩展。然后我关闭并重新打开 pgAdmin 并且它加载良好(不复制服务器 URL)。我正在运行 Windows 8.1 和 PostgresSQL 13。
2021-04-01 09:11:31
你说得对。再次尝试后,它工作正常,无需复制 URL。
2021-04-12 09:11:31