Ressource als Skript interpretiert, aber mit MIME-Typ text / plain übertragen - für lokale Datei

97

Beim Einfügen einer lokalen Skriptdatei wird in Google Chrome die Warnung "Ressource als Skript interpretiert, aber mit Text / Klartext vom Typ MIME übertragen" angezeigt.

Ich weiß, dass das Problem beim Laden einer Datei von einem Server oder über Ajax auftritt, was meistens davon abhängt, dass falsche Header gesetzt werden.

Das Seltsame ist, dass ich diese Warnung erhalte, obwohl sie aus einem lokalen Ordner ausgeführt wird: file:///C:/test/foo.html

Dies geschieht nur in Chrome mit dem grundlegendsten HTML, das es gibt:

<!DOCTYPE html>
    <html>
    <head>
        <script type="text/javascript" src="bar.js"></script>
    </head>
    <body>
    </body>
</html>

bar.js ist auch so einfach wie es nur geht:

function hello() {}

Ich habe versucht, ein Meta-Tag hinzuzufügen:

<meta http-equiv="content-script-type" content="text/javascript">

und mit anderen Doktypen getestet, aber nichts scheint zu helfen.

Dies ist offensichtlich kein wirkliches Problem, da die Skripte immer noch gut funktionieren, aber ich arbeite an einem großen Projekt und habe derzeit ungefähr 150 Skripte enthalten. Es macht es daher schwierig zu erkennen, wann eine tatsächliche Warnung zwischen ihnen auftritt.

Alles funktioniert einwandfrei, wenn ich die Datei lokal oder remote auf einem Server ausführe.

Irgendwelche Ideen, warum Chrom mich damit nervt?

Batzkoo
quelle
Sie haben neulich nicht das neueste Visual Studio installiert, oder? Das passierte mir und das ist das einzige, was sich geändert hat ...
Simon Sarris
Ja, VS Express 2012 RC vor ein paar Wochen. Ich habe auch darüber nachgedacht, also habe ich die Dateien stattdessen mit Notepad ++ erstellt, aber das Problem bleibt das gleiche. Wenn VS dies verursacht, müssen sie eine globale Einstellung / einen globalen Parameter geändert haben? Die Frage ist was und wie ändere ich es zurück?
Batzkoo
Ich versuche immer noch, das Gleiche herauszufinden. Es scheint eine globale Sache zu sein und es geschah genau nach der Installation von VS2012. Ich werde Sie wissen lassen, wenn ich etwas herausfinde. Um es klar auszudrücken, ich verwende Visual Studio nicht für die Dateibearbeitung, was es seltsam macht.
Simon Sarris

Antworten:

195

Ich habe es herausgefunden!

Das Visual Studio-Installationsprogramm muss der Registrierung eine fehlerhafte Zeile hinzugefügt haben.

Öffnen Sie sich regeditund sehen Sie sich diesen Registrierungsschlüssel an:

Geben Sie hier die Bildbeschreibung ein

Sehen Sie diesen Schlüssel? Der Inhaltstyp-Schlüssel? Ändern Sie den Wert von text / plain in text / javascript.

Endlich kann Chrom wieder leicht atmen.

Ich sollte beachten, dass unter Windows 7 standardmäßig weder Content Type noch PercievedType vorhanden sind, sodass Sie wahrscheinlich beide sicher löschen können, aber das Minimum, das Sie tun müssen, ist diese Bearbeitung.

Wie auch immer, ich hoffe, das behebt es auch für Sie!

Simon Sarris
quelle
8
Das hast du gut gemacht! um die Lösung für diesen Ärger zu finden. Ich habe den Schlüssel nicht gelöscht, sondern den Datenwert in Text / Javascript geändert. Vielen Dank!
Batzkoo
haha ich habe es in text / script geändert und es hat nicht funktioniert, vielleicht hätte ich text / javascript ausprobieren sollen!
Simon Sarris
Danke für die Lösung! Ich hatte das gleiche Problem ... Tatsächlich hatte der Javascript-Code mit MIME-Typ Klartext für mich Fehler ausgelöst. Ich hatte einige Zeichenfolgen (in einem Array), die Buchstaben enthielten, die in UTF-8-Codierung in osteuropäischen Sprachen wie "ő" gefunden wurden. "Gergő" ist ein schöner ungarischer Vorname. Die Fehler sind auch Gott sei Dank verschwunden, da ich meinen Code nicht ausführen konnte - aber ich habe dies nicht weiter untersucht.
Zoltan
2
Wow, wie haben Sie diese Lösung entdeckt?
Pakman
4
@Pakman Ich hatte eines Tages das Problem, dann kaufte ich einen neuen Computer und hatte das Problem nicht. Als ich dann Visual Studio 2012 installierte, bemerkte ich, dass es wieder auftauchte, und dachte mir, dass dies der Schuldige war. Ich nahm an, dass sich etwas an den Dateizuordnungen der Registrierung geändert hat, da alle meine .jsDateien .txtaussehende Symbole hatten, und stellte daher sicher, dass sie dem richtigen Datentyp zugeordnet waren. Sie waren nicht!
Simon Sarris
30

Ich habe versucht, dieses Problem mit dieser Methode zu beheben, aber es hat bei mir nicht funktioniert.

Mein Problem war, dass der IIS-Manager keine MIME-Typen in den HTTP-Funktionen hatte.

Ich konnte es einschalten, indem ich den statischen Kontext über ...

-> Systemsteuerung

-> Programme

-> Windows-Funktionen ein- oder ausschalten

-> Internetinformationsdienste

-> World Wide Web Services

-> Allgemeine HTTP-Funktionen

-> [X] Statischer Inhalt.

Danach erschienen MIME-Typen und alles begann wieder zu funktionieren.

user2383049
quelle
0

Die akzeptierte Antwort ist großartig! Nur um eine Antwort für diejenigen zu veröffentlichen, die auf ein Problem wie mich stoßen und manchmal einen Abteilungs- / Hochschulcomputer verwenden, bei dem ich nicht die Berechtigung habe, einen Schlüsselwert in regedit zu ändern.

Veränderung

<script type="text/javascript" src="main.js"></script>

zu

<script src="main.js"></script>

Obwohl die Fehlermeldung weiterhin vorhanden ist, wurde die Seite korrekt geladen.

Richard Wong
quelle
2
Das Problem von OP ist jedoch, dass die Seite korrekt geladen wird, er jedoch weiterhin eine Fehlermeldung erhält. Das scheint nichts zu ändern.
Teepeemm