Je charge le fichier java-script dans le modèle Django:
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.
Il se charge correctement sur Chrome. Mais, sur Firefox, je reçois l'avertissement suivant:
<script type="application/javascript" src="{% static 'online-v3.js' %}"></script>
Je crains qu'en raison de ce problème, sur certains navigateurs, le fichier JS ne se charge pas du tout.
Quelle est la raison possible à cela et comment puis-je résoudre ce problème?
3 Réponses :
Supprimez le type ou remplacez-le par "text / javascript" .
Dans la spécification html5, le type n'est pas requis à moins qu'il ne soit pas javascript
Votre serveur est mal configuré et sert des fichiers .js avec un en-tête Content-Type incorrect de text / plain . p >
À l'avenir, Firefox pourrait commencer à bloquer les scripts avec des types MIME incorrects.
Pour ajouter à la réponse de evilpie, la cause principale pour moi était d'utiliser le py -m http.server de base pour les tests locaux. Afin d'attribuer correctement aux fichiers .js le type MIME 'text / javascript', j'utilise à la place ce script de l'utilisateur 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()
Source: https://gist.github.com/HaiyangXu/ec88cbdce3cdbac7b8d5