J'essaie d'accéder à un script au format JSON via AJAX, qui fonctionne bien sur Safari et d'autres navigateurs mais ne s'exécutera malheureusement pas dans Chrome. Cela vient avec l'erreur suivante:
Refus d'exécuter le script à partir de '*' car son type MIME ('application / json') n'est pas exécutable et la vérification stricte du type MIME est activée.
Voici la demande:
$.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 at-il une solution de contournement pour cela?
javascript
jquery
ajax
json
google-chrome
Paul Nelligan
la source
la source
Réponses:
En ajoutant un argument de rappel, vous indiquez à jQuery que vous souhaitez faire une demande pour JSONP à l'aide d'un élément de script au lieu d'une demande pour JSON à l'aide de XMLHttpRequest.
JSONP n'est pas JSON. C'est un programme JavaScript.
Modifiez votre serveur afin qu'il génère le bon type MIME pour JSONP, à savoir
application/javascript
.(Pendant que vous y êtes, arrêtez de dire à jQuery que vous attendez du JSON car c'est contradictoire :)
dataType: 'jsonp'
.la source
Si votre serveur proxy ou conteneur ajoute l'en-tête suivant lors de la diffusion du fichier .js, cela forcera certains navigateurs tels que Chrome à effectuer une vérification stricte des types MIME:
Supprimez cet en-tête pour empêcher Chrome d'effectuer la vérification MIME.
la source
X-Content-Type-Options: nosniff
tête) est une bonne option pour empêcher les attaques de reniflage de contenu.FYI, j'ai la même erreur de la console Chrome. Je pensais que ma fonction AJAX en était la cause, mais j'ai décommenté mon script minifié de
/javascripts/ajax-vanilla.min.js
à/javascripts/ajax-vanilla.js
. Mais en réalité, le fichier source était à/javascripts/src/ajax-vanilla.js
. Donc, dans Chrome, vous obtenez une mauvaise erreur de type MIME même si le fichier est introuvable. Dans ce cas, le message d'erreur est décrit commetext/plain
un type MIME incorrect.la source
J'ai rencontré cette erreur en utilisant IIS 7.0 avec une page d'erreur 404 personnalisée, bien que je soupçonne que cela se produira avec n'importe quelle page 404. Le serveur a renvoyé une réponse html 404 avec un type mime text / html qui n'a pas pu (à juste titre) être exécuté.
la source
Pour les utilisateurs d'enregistrement et de recherche Google , si vous êtes un développeur .NET Core, vous devez définir les types de contenu manuellement, car leur valeur par défaut est nulle ou vide:
la source
Dans mon cas, j'utilise
pour faire la demande (à l'API de Flickr), et j'ai eu la même erreur MIME. Comme la réponse ci-dessus suggérée, en ajoutant le code suivant:
Correction du problème et je ne vois plus l'erreur de type MIME dans la console de Chrome.
la source
si l'application est hébergée sur IIS, assurez-vous que le contenu statique est installé. Panneau de configuration> Programmes> Activer ou désactiver les fonctionnalités Windows> Internet Information Services> Services World Wide Web> Fonctionnalités HTTP communes> Contenu statique.
J'ai rencontré ce problème en essayant d'exécuter une application existante sur une nouvelle installation IIS 10.0
la source