Im Kopf meiner HTML-Seite habe ich:
<script src="https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js"></script>
Wenn ich die Seite in meinen Browser lade (Google Chrome v 27.0.1453.116) und die Entwicklertools aktiviere, heißt es:
Es wurde abgelehnt, ein Skript von " https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js " auszuführen , da sein MIME-Typ ("text / plain") nicht ausführbar ist Die strikte Überprüfung des MIME-Typs ist aktiviert.
In der Tat wird das Skript nicht ausgeführt. Warum ist Chrome der Ansicht, dass dies eine reine Textdatei ist? Es hat eindeutig eine .js
Dateierweiterung.
Da ich HTML5 verwende, habe ich das type
Attribut weggelassen , sodass ich dachte, dass dies das Problem verursachen könnte. Also habe ich type="text/javascript"
den <script>
Tag erweitert und das gleiche Ergebnis erzielt. Ich habe es sogar versucht type="application/javascript"
und trotzdem den gleichen Fehler erhalten.
Dann versuchte ich es type="text/plain"
aus Neugierde zu ändern . Der Browser hat keinen Fehler zurückgegeben, aber natürlich lief auch das JavaScript nicht.
Schließlich dachte ich, die Punkte im Dateinamen könnten den Browser ausschalten. Daher habe ich in meinem HTML-Code alle Punkte in das URL-Escape-Zeichen geändert %2E
:
<script src="https://raw.github.com/cloudhead/less%2Ejs/master/dist/less-1%2E3%2E3.js"></script>
Das hat immer noch nicht funktioniert. Das einzige, was wirklich funktioniert (dh der Browser gibt keinen Fehler aus und der JS wird erfolgreich ausgeführt), ist, dass ich die Datei herunterlade, in ein lokales Verzeichnis hochlade und dann den src
Wert in die lokale Datei ändere . Ich mache das lieber nicht, da ich versuche, Platz auf meiner eigenen Website zu sparen.
Woran erkennt Chrome, dass es sich bei der verknüpften Datei um einen JavaScript-Typ handelt?
quelle
Dezember 2018 bearbeiten
RawGit geht jetzt aufgrund böswilliger Nutzung unter, daher wird empfohlen, stattdessen einen der folgenden Dienste zu verwenden:
Ursprünglicher Beitrag
Mit Rawgithub.com können Benutzer die "Raw" -Versionen eines Git in eine in
<script>
Tags verwendbare URL umwandeln . Es ist ganz einfach zu bedienen, entfernen Sie einfach die erste.
von der rohen URL. Zum Beispiel das:würde sich in diese verwandeln
und dann setzen Sie es in ein
<script>
Tag mit dem entsprechenden Typ. So einfach!Sie begrenzen die Anzahl der Anforderungen, da sie nur für Entwicklungszwecke und nicht für die Produktion bestimmt sind.
2014 bearbeiten
Wie Reinderien bereits erwähnt hat, ist rawgithub jetzt nur noch rawgit, also wäre der neue Skriptlink
quelle
Die Dateierweiterung ist irrelevant, es kommt auf den Content-Type-Header an und diese Datei wird mit einem Content-Type geliefert
text/plain
(was der Zweck von Githubs "Raw" -Ansicht ist).Sie sollten wirklich eine Kopie der Datei lokal auf Ihre Site herunterladen und von dort einbinden. Selbst wenn es von Github aus funktioniert hat, da Sie die JS-Datei nicht asynchron laden, macht das Einfügen dieses
<script>
Tags in den Seitenkopf Ihre Site von der Verfügbarkeit von Github abhängig.quelle
Dies ist eine beabsichtigte Funktion, mit der bestimmte XSS-Angriffe verhindert werden sollen .
Wie Mike West erklärt , nicht
raw.github.com
als CDN verwenden; Verwenden Sie stattdessen GitHub Pages .Das explizite Codieren nicht reservierter Zeichen ändert auch nichts an der Behandlung der URL.
quelle
Wie bybe feststellt, liegt das Problem darin, dass fast alle von raw.github.com bereitgestellten Inhalte als Textdatei gesendet werden. Auf diese Weise werden die Inhalte in Ihrem Browser im Klartext wiedergegeben, ohne dass andere Anwendungen oder Probleme im Weg stehen. Andernfalls könnte es vorkommen, dass der Browser versucht, eine .js-Datei anzuzeigen, und versucht, sie auszuführen, anstatt sie Ihnen anzuzeigen.
Außerdem versuchen weder github noch pages.github, eine CDN zu sein. Sie sollten wirklich entweder:
quelle