【问题标题】:JavaScript MIME type warning on FirefoxFirefox 上的 JavaScript MIME 类型警告
【发布时间】:2019-12-17 07:51:37
【问题描述】:

我正在 Django 模板中加载 java-script 文件:

<script type="application/javascript" src="{% static 'online-v3.js' %}"></script>

它在 Chrome 上正确加载。但是,在 Firefox 上,我收到以下警告:

The script from “http://127.0.0.1:8000/static/myscript.js” was loaded even though its MIME type (“text/plain”) is not a valid JavaScript MIME type.

我担心由于这个问题,在某些浏览器上可能根本无法加载 JS 文件。

这可能是什么原因,我该如何解决这个问题?

【问题讨论】:

  • 我通过 HTML 使用路由器(由 .htaccess 文件调用)加载 .js 文件时收到此警告,不使用脚本元素中的任何类型属性,但仅在 Firefox 上,而不是在铬合金。 Firefox 中的错误?

标签: javascript html django firefox


【解决方案1】:

删除type 或将其更改为"text/javascript"

在 html5 规范中 type 不是必需的,除非它是 not javascript

【讨论】:

  • 文本/javascript 或应用程序/javascript ?我都看过了。
【解决方案2】:

为了补充 evilpie 的答案,我的根本原因是使用基本的 py -m http.server 进行本地测试。为了正确分配 .js 文件的 'text/javascript' MIME 类型,我改用 Github 用户 HaiyangXu 的这个脚本。

# -*- coding: utf-8 -*-
#test on python 3.4 ,python of lower version  has different module organization.
import http.server
from http.server import HTTPServer, BaseHTTPRequestHandler
import socketserver

PORT = 8080

Handler = http.server.SimpleHTTPRequestHandler

Handler.extensions_map={
        '.manifest': 'text/cache-manifest',
    '.html': 'text/html',
        '.png': 'image/png',
    '.jpg': 'image/jpg',
    '.svg': 'image/svg+xml',
    '.css': 'text/css',
    '.js':  'application/x-javascript',
    '': 'application/octet-stream', # Default
    }

httpd = socketserver.TCPServer(("", PORT), Handler)

print("serving at port", PORT)
httpd.serve_forever()

来源:https://gist.github.com/HaiyangXu/ec88cbdce3cdbac7b8d5

【讨论】:

    【解决方案3】:

    您的服务器配置错误,并且正在为 .js 文件提供错误的 Content-Type 标头 text/plain

    未来 Firefox 可能会开始阻止 MIME 类型不正确的脚本。

    【讨论】:

    • MIME 类型的原因是什么?对于常见的图片、js、css,数据的含义从它的HTML上下文就很明显了。
    最近更新 更多