Chrome refuse d'exécuter un script AJAX dus à un mauvais type MIME
J'essaye d'accéder à un script JSON via AJAX, qui fonctionne très bien sur Safari et les autres navigateurs, mais malheureusement ne va pas s'exécuter dans le navigateur Chrome. Ça vient avec l'erreur suivante:
Refusé d'exécuter le script de '*' parce que son type MIME "application/json") n'est pas exécutable, et à la stricte MIME type de contrôle est activé.
Voici la requête:
$.ajax({
url: "http://some_url/test.json?callback=?",
type: "GET",
dataType: 'json',
cache: true,
success: function (data, status, error) {
console.log('success', data);
},
error: function (data, status, error) {
console.log('error', data, status, error);
}
});
Quelqu'un aurait-il une solution pour cela?
- Alors, qu'est-ce que cette ressource? Un JSONP script ou un fichier JSON? Fait de son type MIME match? Apparemment pas. Pas besoin pour une solution de contournement, corrigez-la.
- suppression de la fonction de rappel et l'utilisation de type de données jsonp ne permet pas de résoudre le problème
- Je voulais dire, corrigé de la réponse du serveur.
- que faire si le serveur est à l'extérieur de l'OP de contrôle? Peut-être qu'il essaie d'utiliser un API externe, tels que LinkedIn.
- Il devrait faire rapport à ce qu'un bug, car il rend l'API inutilisable. En attendant d'être fixé, il peut utiliser un proxy que les changements de type de mime ou de contenu.
Vous devez vous connecter pour publier un commentaire.
Par l'ajout d'un rappel de l'argument, en vous disant jQuery que vous souhaitez faire une demande d'JSONP à l'aide d'un élément de script au lieu d'une demande de JSON à l'aide de XMLHttpRequest.
JSONP est pas de JSON. C'est un programme JavaScript.
Changer votre serveur afin de les sorties de la droite, type MIME JSONP qui est
application/javascript
.(Pendant que vous y êtes, arrêtez de dire jQuery qui vous attendent JSON que c'est contradictoire:
dataType: 'jsonp'
).Si votre serveur proxy ou d'un conteneur ajoute l'en-tête suivant au moment de servir la .fichier js, il va forcer certains navigateurs tels que Chrome pour effectuer une stricte vérification de types MIME:
Supprimer cet en-tête pour empêcher google Chrome d'effectuer le MIME vérifier.
X-Content-Type-Options: nosniff
en-tête) est une bonne option pour éviter que le contenu concernant la détection des attaques.Pour info, j'ai eu la même erreur à partir de Chrome de la console. Je pensais que mon AJAX fonction de la cause, mais j'ai pas commenté mon minifiés script de
/javascripts/ajax-vanilla.min.js
à/javascripts/ajax-vanilla.js
. Mais en réalité, le fichier source a été à/javascripts/src/ajax-vanilla.js
. Ainsi, dans Chrome, vous obtenez de mauvais type MIME erreur, même si le fichier ne peut pas être trouvé. Dans ce cas, le message d'erreur est décrit commetext/plain
mauvais type MIME.J'ai rencontré cette erreur à l'aide de IIS 7.0 avec une page erreur 404 personnalisée, même si j'imagine que ce sera le cas avec tout de la page 404. Le serveur a renvoyé un code html réponse 404 avec un texte/html type mime qui ne pouvait pas (à juste titre) d'être exécuté.
Pour l'enregistrement et la recherche Google utilisateurs,
Si vous êtes un .NET Core developer, vous devez définir les types de contenu manuellement, car leur valeur par défaut est null ou vide:
Dans mon cas, j'utilise
pour faire la demande (sur Flickr API), et j'ai eu le même MIME erreur.
Comme la réponse ci-dessus suggère, en ajoutant le code suivant:
Résolu le problème et je ne vois plus le type MIME d'erreur dans la console de Chrome.
si l'application est hébergée sur IIS, assurez-vous que le Contenu Statique est installé. Panneau de configuration > Programmes > fonctionnalités Windows Activer ou désactiver > Internet Information Services > Services World Wide Web > Fonctionnalités HTTP Communes > Contenu Statique.
J'ai été confronté à ce problème lorsque vous essayez d'exécuter une application existante sur un nouveau IIS 10.0 installation