Ich versuche, über AJAX auf ein Skript als JSON zuzugreifen, das in Safari und anderen Browsern einwandfrei funktioniert, aber in Chrome leider nicht ausgeführt wird. Es kommt mit folgendem Fehler:
Die Ausführung des Skripts von '*' wurde abgelehnt, da der MIME-Typ ('application / json') nicht ausführbar ist und die strikte Überprüfung des MIME-Typs aktiviert ist.
Hier ist die Anfrage:
$.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);
}
});
Hat jemand eine Problemumgehung dafür?
javascript
jquery
ajax
json
google-chrome
Paul Nelligan
quelle
quelle
Antworten:
Durch Hinzufügen eines Rückrufarguments teilen Sie jQuery mit, dass Sie eine Anforderung für JSONP mithilfe eines Skriptelements anstelle einer Anforderung für JSON mithilfe von XMLHttpRequest stellen möchten.
JSONP ist nicht JSON. Es ist ein JavaScript-Programm.
Ändern Sie Ihren Server so, dass er den richtigen MIME-Typ für JSONP ausgibt
application/javascript
.(Wenn Sie schon dabei sind, hören Sie auf, jQuery mitzuteilen, dass Sie JSON erwarten, da dies widersprüchlich ist :)
dataType: 'jsonp'
.quelle
Wenn Ihr Proxyserver oder Container beim Bereitstellen der JS-Datei den folgenden Header hinzufügt, werden einige Browser wie Chrome gezwungen, die MIME-Typen streng zu überprüfen:
Entfernen Sie diesen Header, um zu verhindern, dass Chrome die MIME-Prüfung durchführt.
quelle
X-Content-Type-Options: nosniff
Headers) ist eine gute Option, um Content-Sniffing-Angriffe zu verhindern.Zu Ihrer Information, ich habe den gleichen Fehler von der Chrome-Konsole. Ich dachte, meine AJAX-Funktion würde es verursachen, aber ich habe mein minimiertes Skript von
/javascripts/ajax-vanilla.min.js
bis auskommentiert/javascripts/ajax-vanilla.js
. Aber in Wirklichkeit war die Quelldatei bei/javascripts/src/ajax-vanilla.js
. In Chrome wird also ein fehlerhafter MIME-Typfehler angezeigt, auch wenn die Datei nicht gefunden werden kann. In diesem Fall wird die Fehlermeldung alstext/plain
fehlerhafter MIME-Typ beschrieben.quelle
Ich habe diesen Fehler bei Verwendung von IIS 7.0 mit einer benutzerdefinierten 404-Fehlerseite festgestellt, obwohl ich vermute, dass dies bei jeder 404-Seite der Fall ist. Der Server gab eine HTML 404-Antwort mit einem Text / HTML-MIME-Typ zurück, der (zu Recht) nicht ausgeführt werden konnte.
quelle
Wenn Sie ein .NET Core-Entwickler sind, sollten Sie die Inhaltstypen für Datensatz- und Google -Suchbenutzer manuell festlegen, da ihr Standardwert null oder leer ist:
quelle
In meinem Fall benutze ich
um die Anfrage (an Flickr's API) zu stellen, und ich habe den gleichen MIME-Fehler erhalten. Fügen Sie wie in der obigen Antwort den folgenden Code hinzu:
Das Problem wurde behoben und ich sehe den MIME-Typfehler in der Chrome-Konsole nicht mehr.
quelle
Wenn die Anwendung auf IIS gehostet wird, stellen Sie sicher, dass statischer Inhalt installiert ist. Systemsteuerung> Programme> Windows-Funktionen ein- oder ausschalten> Internetinformationsdienste> World Wide Web Services> Allgemeine HTTP-Funktionen> Statischer Inhalt.
Dieses Problem trat auf, als ich versuchte, eine vorhandene Anwendung auf einer neuen IIS 10.0-Installation auszuführen
quelle