Dans FF et tout, mon javascript fonctionne très bien. Mais dans Chrome, il donne ce message:
Ressource interprétée comme script mais transférée avec du texte de type MIME / plain.
J'ai vérifié toutes les balises de script et elles ont toutes le MIME type="text/javascript"
. Il le dit même avec jquery et jquery ui. Quel est le problème avec Chrome?
Quel est le problème et la solution? Est-ce quelque chose que je dois changer dans les «options» du navigateur ou est-ce à partir du serveur, ou dois-je modifier mon code?
google-chrome
mime-types
Shaoz
la source
la source
Réponses:
Cela signifie que le serveur envoie une réponse HTTP Javascript avec
Vous devez configurer le serveur pour envoyer une réponse JavaScript avec
la source
content-type:application/javascript
cependant,application/x-javascript
n'est pas une norme RFC ou ECMAScript.Cela n'a rien à voir avec jQuery ou toute bizarrerie de code de script côté client. Il s'agit d'un problème côté serveur : le serveur (application côté) n'envoie pas la valeur de
Content-Type
champ d'en-tête HTTP attendue pour la ressource de script côté client. Cela se produit si le serveur Web est insuffisamment configuré, mal configuré ou si une application côté serveur (par exemple, PHP) génère la ressource de script côté client.Les types de média MIME appropriés pour les implémentations ECMAScript comme JavaScript incluent:
text/javascript
(enregistré comme obsolète , non obsolète, mais toujours valide et mieux pris en charge )text/ecmascript
(enregistré comme obsolète , non obsolète, mais toujours valide )application/javascript
application/ecmascript
Ils ne pas comprennent
application/x-javascript
, comme les types de support MIME listés ci - dessus sont ceux enregistrés dans l'arborescence des normes maintenant (il n'y a donc pas besoin, et il ne devrait pas besoin, d'utiliser les plus expérimentales). Cf. RFC 4329, "Scripting Media Types" (2005 CE) et mon scénario de test: prise en charge des scripts de types de supports .Une solution consiste à configurer le serveur si possible, comme déjà recommandé. Pour Apache, cela peut être aussi simple que d'ajouter la directive
(voir la documentation Apache HTTP Server pour plus de détails).
Mais si la ressource de script côté client est générée par une application côté serveur, comme PHP, il est nécessaire de définir
Content-Type
explicitement la valeur du champ d'en-tête, car la valeur par défaut est probabletext/html
:(Cela et des instructions similaires doivent précéder toute autre sortie - voir le manuel PHP -, sinon le corps du message HTTP est considéré comme ayant déjà commencé et il est trop tard pour envoyer plus de champs d'en-tête.)
La génération côté serveur peut arriver facilement à une ressource de script côté client même si vous avez des fichiers .js simples sur le serveur, si les commentaires leur sont supprimés lorsqu'ils sont servis, s'ils sont tous regroupés dans une seule grande réponse (pour réduire la nombre de requêtes, qui peut être plus efficace), ou elles sont minimisées par l’application côté serveur de toute autre manière.
la source
text/javascript
plusapplication/javascript
. Si vous avez des raisons de croire queapplication/javascript
c'est la meilleure réponse maintenant, alors le moins que vous devriez faire est de vous expliquer dans un commentaire. Il est inapproprié qu'il nécessite le mécanisme de notification de Stack Overflow pour que je prenne connaissance de vos modifications. J'ai rétabli vos modifications, que j'appelle dupes , aux réponses à cette question lorsque je les juge inappropriées.Pour les serveurs d'applications Java tels que Weblogic
1) Assurez-vous que votre fichier weblogic.xml est exempt d'erreurs
comme celui-ci:
2) Ajoutez un type mime pour javascript à votre fichier web.xml :
Cela fonctionnera également pour d'autres conteneurs Java - Tomcat etc.
application/javascript
est actuellement le seul type MIME valide; d'autres commetext/javascript
ont été dépréciés.3) Vous devrez peut-être vider le cache de votre navigateur ou appuyer sur CTRL-F5
la source
J'ai eu ce problème et j'ai compris comment le résoudre.
Cela se produit lorsque le fichier de style (CSS) est dans un codage différent du fichier PHP qui fait référence au fichier .css
Par exemple, l'utilisation de jQuery.js dans l'encodage Unix et l'utilisation d'index.php dans UTF-8 entraîneront ce problème, vous devez donc les rendre à la fois UTF-8 ou tout autre encodage tant qu'il est le même.
la source
Si vous générez votre javascript avec un fichier php, ajoutez ceci comme début de votre fichier:
la source
Dans le httpd.conf de votre apache, ajoutez simplement une telle ligne:
la source
J'ai reçu ce message de débogage pour une raison plus idiote que les autres réponses ici: il s'agit du message d'erreur reçu lorsque vous n'obtenez pas suffisamment de sommeil et référencez un fichier js en utilisant la syntaxe d'un fichier css. Un péché,
plutôt que
Je pensais que je mettrais cela ici parce que c'est le premier message qui apparaît lors de la recherche du message d'erreur.
la source
Problème étrange, mais cela m'a aidé à résoudre mon problème. Parfois, même les choses les plus faciles sont difficiles à comprendre ...
Au lieu d'utiliser
/js/main.css
dans mon script-tag, j'ai utiliséjs/main.css
OUI , cela a réellement fait une différence. Je suis assis sur WAMP / Windows et je n'avais pas de vhost mais juste utilisé
localhost/<project>
Si je fais référence à,
/js/main.css
je fais référence àlocalhost/css/main.css
et non àlocalhost/<project>/css/main.css
Quand on y pense, c'est assez évident, mais si quelqu'un bute dessus, je pensais partager cette réponse.
la source
Vérifiez que vos fichiers js existent réellement sur le serveur. J'ai eu ce problème et j'ai découvert que les fichiers js n'avaient pas été téléchargés sur le serveur et que le serveur renvoyait en fait la page html - qui était le document par défaut configuré sur le serveur (par exemple default.html)
la source
Si vous travaillez sur Joomla! et obtenir cette erreur gênante lorsque vous essayez d'inclure un
.js
fichier JavaScript ( ), alors la solution suivante est pour vous.Le problème le plus probable est que vous essayez d'inclure un
.js
fichier qui n'est pas là , ou que vous venez de perdre ce.js
fichier, et quand Joomla! ne trouve pas de ressource, puis au lieu du message générique 404, il renvoie un message 404 à part entière avec une page Web complète et du HTML, etc.Le navigateur Web l'interprète comme s'il s'agissait
.js
simplement d'une page Web indiquant que le fichier requis n'a pas été trouvé .Cela peut fonctionner pour joomla2.5joomla3.0joomla3.1joomla3.2joomla3.3joomla
la source
Pour moi, cela ne s'est produit que sur certaines pages car j'ai utilisé à la
window.location
place de$location.url(...);
Cela a résolu mon problème. Il a fallu un certain temps pour comprendre :)la source
J'ai eu ce problème lors de l'utilisation d'un framework Web et l'ai résolu en déplaçant les fichiers javascript appropriés dans le dossier javascript désigné (par le framework).
la source
Une chose courante lorsque cela se produit est que vous avez simplement oublié d'inclure le
type
dans vos appels de script. Vous devrez le définir explicitement, car il est - selon W3 - requis :Il semble cependant que les navigateurs aient une valeur par défaut de
plain/text
.Exemple:
Vous pouvez également définir une valeur par défaut pour cette extension de fichier dans votre configuration Apache:
la source
Si son IIS assurez-vous que sous votre
common HTTP Features
vous avezStatic Content
alluméla source
J'ai eu la même erreur et finalement (dans mon cas particulier) j'ai trouvé un problème dans le descripteur de déploiement (web.xml)
Le problème:
la solution:
la source
Si vous utilisez Spring MVC, vous pouvez ajouter la balise mvn suivante pour exclure le fichier de ressources du servlet Spring Dispatch
la source
Dans mon cas, le serveur envoyait le bon
Content-Type
mais avec un incorrectContent-Encoding
. Assurez-vous que vous ne définissez queContent-Encoding: gzip
pour les ressources gzippées. De plus, après avoir corrigé les en-têtes sur le serveur (dans mon cas, Google Cloud Storage), j'ai dû attendre quelques minutes pour refléter correctement les changements dus à la mise en cache.la source
Si vous utilisez AdonisJS (API REST, par exemple), une façon d'éviter cela est de définir l'en-tête de réponse de cette façon:
la source
J'avais le même problème lorsque j'essayais de changer une image d'arrière-plan dans un tableau via javascript (jQuery dans ce cas).
En tous cas.
Au lieu de cela:
faites ceci:
Le javascript de Chrome est vissé lorsque vous essayez d'analyser une variable à l'intérieur d'un élément structuré avec '. Dans mon cas, il s'est arrêté juste avant l'insertion du tableau d'images. Au lieu d'analyser l'URL de l'image + le nom de l'image (à l'intérieur du tableau), il analysait uniquement l'URL de l'image.
Vous devrez probablement rechercher dans le code et voir où cela se produit. FF, IE et tous les autres n'ont pas ce problème.
la source
eval
si vous pouvez l'aider: javascripttoolbox.com/bestpractices/#evalLa réponse publiée ici par simon-sarris m'a aidé.
N'oubliez pas de redémarrer votre système après les modifications.
la source