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

rob*_*b.m 63 javascript json

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

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

Que*_*tin 49

你有一个<script>试图加载一些外部JavaScript 的元素.

您提供的URL指向JSON文件而不是JavaScript程序.

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


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

带有附加查询字符串参数的相同URL callback=the_name_of_your_callback_function确实会返回JavaScript.

  • `type="application/json"` — 现在浏览器知道它不是在尝试加载 JavaScript,所以它完全忽略了脚本元素。 (3认同)
  • 我现在给出了它,它修复了错误&lt;script id =“ data” type =“ application / json” (2认同)

mru*_*ova 48

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

  • 相同.错误的路径会导致某些错误的html-page响应,从而导致这种令人困惑的错误消息. (6认同)
  • 天才的回答。谢谢 :) (2认同)

AIo*_*Ion 20

这个结果是第一个在谷歌弹出的结果,并且比这里发生的更广泛.以下内容适用于快速服务器:

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

里面index.html我有

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

静态路由安装在:

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

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

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

现在它工作:)


Ahm*_*awy 11

就我而言,我正在处理遗留代码

我有这行代码

<script type="text/javascript" src="js/i18n.js.php"></script>
Run Code Online (Sandbox Code Playgroud)

我对这应该如何工作感到困惑,这段代码调用的是 PHP 文件而不是 js

尽管它正在实时服务器上运行

但我在舞台服务器上遇到这个错误

内容类型是

content-type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

即使它是脚本标签中的文本/javascript

在我添加之后

header('Content-Type: text/javascript');
Run Code Online (Sandbox Code Playgroud)

在文件i18n.js.php的开头

错误已修复

在此输入图像描述


Nim*_*esh 6

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

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

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

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

谢谢,


ara*_*jpc 6

搜索了一段时间后,我意识到我的 Windows 10 64 位中的这个错误与 JavaScript 相关。为了看到这一点,请转到您的浏览器 DevTools 并首先确认。就我而言,它显示了一个错误,如“MIME 类型(‘application/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。 (2认同)