为什么浏览器拒绝加载我的.js文件并抱怨MIME类型?

问题描述 投票:0回答:1

解决方案:

我应该早点发现这个。跟随本书(或类似内容)的任何人都可以通过此方法获得帮助:

我将文件放在错误的“静态”目录下:[项目目录] / static,而不是[项目目录] / lists / static,其中“ lists”是已创建的Django“ app”的名称。这两个“静态”目录中都有一个base.css文件(正在加载was),这使我感到困惑。


我正在尝试从[非常好] book中学习Django。

它刚到chapter,其中添加了一些Javascript。在Java方面,我并不是一个新手。

但是我已经用完了全部缓冲区。

我们被告知将这些行放到我们的Django模板文件base.html的末尾:>

<script src="/static/jquery-3.3.1.min.js"></script>
<script src="/static/list.js"></script>

<script>
  initialize(); // NB this is a simple function in the list.js script
</script>

NB,为澄清起见,我正在使用Django开发服务器在浏览器中运行此程序。与本书所说的相反,失败的功能测试正在使用django.contrib.staticfiles.testing.StaticLiveServerTestCase

我尝试过的所有浏览器(Firefox,Chrome,Opera)均无法加载这些JS文件。如果使用Chrome(控制台),则这两个文件的状态为404,而同一目录下/目录下的两个.css文件的状态为200。在FF(v。72)的情况下,控制台消息更加含糊:对于这两个文件,控制台首先给出了一个令人困惑的MIME相关消息: (“ text / html”)不是有效的JavaScript MIME类型。“

,然后紧接着说”源为“ http://localhost:8000/static/jquery-3.3.1.min.js”的加载失败。“我已经做了相当多的搜索以找出可能发生的情况。我在有问题的Django模板文件中尝试过这样的代码:

http://localhost:8000/static/jquery-3.3.1.min.js

...以上都不改变任何东西。

我正在运行的Django服务器也显示404 ...,但仅适用于JS文件:

<script type="text/javascript" src="/static/jquery-3.3.1.min.js"></script> <script LANGUAGE="JavaScript" src="/static/jquery-3.3.1.min.js"></script> <script type="application/javascript" src="/static/jquery-3.3.1.min.js"></script>

怀疑我可能会不知所措,我仔细检查并三重检查:这些具有精确名称的精确JS文件确实位于相关的“静态”目录中。

我不知道这些MIME的内容是什么,以及它如何如此严重地阻止JS文件的加载。为了检查我的机器上的MIME类型,这是值得的:

[19/Apr/2020 18:19:04] "GET / HTTP/1.1" 200 1451 [19/Apr/2020 18:19:05] "GET /static/jquery-3.3.1.min.js HTTP/1.1" 404 1670 [19/Apr/2020 18:19:05] "GET /static/base.css HTTP/1.1" 200 33 [19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634 [19/Apr/2020 18:19:05] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 200 117305 [19/Apr/2020 18:19:05] "GET /static/list.js HTTP/1.1" 404 1634

我很难相信这是相关的,因为我在所有3种浏览器上都遇到问题,但是有一个FF错误消息的“了解更多”链接,该链接指向mike@M17A ~ $  grep 'js' /etc/mime.types
application/javascript              js
application/json                    json
,我们的内容如下: 

[从Firefox 72开始,也选择不使用MIME嗅探 如果提供了Content-type,则应用于顶级文档。这个可以 导致HTML网页在以下情况下被下载而不是呈现 它们以text / html以外的MIME类型提供。确保 正确设置两个标题。

站点安全测试人员通常希望设置此标头。

我的FF版本?是的,72。

[实际上是如何“设置标题”?并不是说这一定是解决方案……但是大概不会造成伤害。

根据Sraw的评论进行编辑

适用于jquery-3.3.1.min.js的Chrome开发人员工具标头:here
解决方案:我应该早点发现这一点。本书(或类似书籍)后面的任何人都可以得到帮助:我将文件放在错误的“静态”目录下:[项目目录] / ...
javascript python django firefox mime-types
1个回答
0
投票
将其发布为答案。尽管我为犯这样愚蠢的错误感到尴尬。

我将文件放在错误的“静态”目录下:[项目目录] / static,而不是[项目目录] / lists / static,其中“ lists”是已创建的Django“ app”的名称。这两个“静态”目录中都有一个base.css文件(正在加载

was

© www.soinside.com 2019 - 2024. All rights reserved.