由于mime类型不匹配导致资源被阻止(x-content-type-options:nosniff)

lc8prwob  于 2021-09-29  发布在  Java
关注(0)|答案(13)|浏览(1323)

我正在使用javascript和html开发一个网页,当我从html页面收到以下错误列表时,一切正常:

The resource from “https://raw.githubusercontent.com/dataarts/dat.gui/master/build/dat.gui.min.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/CanvasRenderer.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/master/examples/js/renderers/Projector.js”
  was blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).
The resource from “https://raw.githubusercontent.com/mrdoob/three.js/dev/build/three.js” was
  blocked due to MIME type mismatch (X-Content-Type-Options: nosniff).

这些错误出现在自动浏览器更新(mozilla firefox)之后,可能是设置中发生了更改。你知道解决这个问题的办法吗?

nbewdwxp

nbewdwxp1#

检查文件路径是否正确,文件是否存在-在我的情况下,这就是问题所在-在我修复它时,错误消失了

wljmcqd8

wljmcqd82#

可以通过将url更改为使用镜像/代理来修复此问题。而不是使用github:

https://raw.githubusercontent.com/svnpenn/bm/master/yt-dl/yt-dl.js
Content-Type: text/plain; charset=utf-8

使用第三方缓存:

https://cdn.rawgit.com/svnpenn/bm/master/yt-dl/yt-dl.js
content-type: application/javascript;charset=utf-8

rawgit.com是github的缓存代理服务,自2018年起关闭。请参阅常见问题解答

b4wnujal

b4wnujal3#

在我们的devops团队通过添加 X-Content-Type-Options: nosniff . 现在,由于这个原因,浏览器被迫解释中提到的资源 content-type 响应头的参数。
现在,从一开始,我们的应用服务器就显式地将js文件的内容类型设置为 text/plain . 自从 X-Content-Type-Options: nosniff 未在webserver中设置,浏览器自动将js文件解释为javascript文件,尽管内容类型被称为text/plain。这称为mime嗅探。现在,在设置了x-content-type-options:nosniff之后,浏览器被迫不进行mime嗅探,而是采用响应头中提到的内容类型。因此,它将js文件解释为纯文本文件,并拒绝执行或阻止它们。同样的错误也会出现。
解决方案:将服务器设置为 content-type js文件的格式为

application/javascript;charset=utf-8

这样,它将正常加载所有js文件,问题将得到解决。

wfypjpf4

wfypjpf44#

检查您的路径,若文件不存在于给定路径中,则会出现此错误。

lztngnrs

lztngnrs5#

你在用快车吗?
检查您的路径(注意“ / “在/public/)之后:

app.use(express.static(__dirname + "/public/"));

//注意:您不需要在“css”前面加“/”,因为上面已经包括了它:

rel="stylesheet" href="css/style.css

希望这有帮助

ybzsozfc

ybzsozfc6#

这可能是一条错误的道路。确保在主应用程序文件中您有:

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

链接到css的示例如下:

<link href="/css/clean-blog.min.css" rel="stylesheet">

与js文件的链接类似:

<script src="/js/clean-blog.min.js"></script>
uqxowvwt

uqxowvwt7#

对于wordpress
在我的例子中,我刚刚错过了get_template_directory_uri()之后的斜杠“/”,因此结果/生成的路径是错误的:
我的错误代码:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'js/retina.min.js' );

我的更正代码:

wp_enqueue_script( 'retina-js', get_template_directory_uri().'/js/retina.min.js' );
ghg1uchk

ghg1uchk8#

这可能是因为浏览器无法访问文件。我在使用node.js创建应用程序时遇到了这种错误。您可以尝试直接请求脚本文件(复制和粘贴url)并查看是否可以检索它。这样你就能知道真正的问题是什么了。这可能是因为文件所在文件夹的权限,或者是由于文件路径不正确,浏览器无法找到文件。在node.js中,在指定到文件的路由后,所有节点都工作。

wd2eg0qa

wd2eg0qa9#

通过将js文件中的字符集从没有bom的utf-8更改为记事本中的简单utf-8,我解决了这个问题++

bqf10yzr

bqf10yzr10#

当我将azure存储用作静态网站时,出现了这个错误,复制的js文件的内容类型为 text/plain; charset=utf-8 我将内容类型更改为 application/javascript 它开始工作了。

41zrol4v

41zrol4v11#

有关https和http协议,请参阅
有时,如果您使用的是混合协议[这种情况主要发生在jsonp回调中],那么最终可能会出现此错误。
确保网页和资源页具有相同的http协议。

5f0d552i

5f0d552i12#

我在django服务器中也遇到了同样的问题,所以我在settings.py文件中更改了debug=true

ggazkfy8

ggazkfy813#

我的标签错了。我错误地在中添加了js文件 link 标签。
示例:(错误的一个)

<link rel="stylesheet" href="plugins/timepicker/bootstrap-timepicker.min.js">

它通过使用正确的标签来解决 javascript . 例子:

<script src="plugins/timepicker/bootstrap-timepicker.min.js"></script>

相关问题