W nagłówku mojej strony HTML mam:
<script src="https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js"></script>
Gdy ładuję stronę w przeglądarce (Google Chrome w wersji 27.0.1453.116) i włączam narzędzia programistyczne, mówi:
Odmówiono wykonania skryptu z „ https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js ”, ponieważ jego typ MIME („tekst / zwykły”) nie jest wykonywalny, oraz ścisłe sprawdzanie typu MIME jest włączone.
Rzeczywiście, skrypt nie uruchomi się. Dlaczego Chrome uważa, że jest to zwykły plik tekstowy? Wyraźnie ma .js
rozszerzenie pliku.
Ponieważ używam HTML5, pominąłem ten type
atrybut, więc pomyślałem, że to może być przyczyną problemu. Dodałem więc type="text/javascript"
do <script>
tagu i uzyskałem ten sam wynik. Próbowałem nawet type="application/javascript"
i nadal mam ten sam błąd.
Potem spróbowałem zmienić to na type="text/plain"
ciekawość. Przeglądarka nie zwróciła błędu, ale oczywiście JavaScript też nie działał.
Wreszcie pomyślałem, że kropki w nazwie pliku mogą powodować wyłączenie przeglądarki. W moim kodzie HTML zmieniłem wszystkie kropki na znak zmiany znaczenia adresu URL %2E
:
<script src="https://raw.github.com/cloudhead/less%2Ejs/master/dist/less-1%2E3%2E3.js"></script>
To wciąż nie działało. Jedyne, co naprawdę działa (tzn. Przeglądarka nie wyświetla błędu i JS działa poprawnie), to jeśli pobiorę plik, załaduję go do lokalnego katalogu, a następnie zmienię src
wartość na plik lokalny. Wolałbym tego nie robić, ponieważ staram się oszczędzać miejsce na własnej stronie internetowej.
Jak sprawić, by Chrome rozpoznał, że połączony plik jest w rzeczywistości typem JavaScript?
źródło
Edycja z grudnia 2018 r
RawGit zachodzi obecnie z powodu złośliwego użycia, dlatego zamiast tego zaleca się skorzystanie z jednej z następujących usług:
Oryginalny post
Rawgithub.com pozwala użytkownikom pobrać „surowe” wersje Git i przekształcić go w URL dostępny w
<script>
tagach. Jest dość łatwy w użyciu, wystarczy usunąć pierwszy.
z nieprzetworzonego adresu URL. Na przykład :zamieniłoby się w to
a następnie umieścisz go w
<script>
tagu odpowiedniego typu. Tak proste!Ograniczają liczbę żądań, ponieważ są one przeznaczone wyłącznie do celów programistycznych, a nie produkcyjnych.
Edycja 2014
Jak wspomniał Reinderien, rawgithub jest teraz po prostu rawgit, więc nowy link do skryptu będzie
źródło
Rozszerzenie pliku jest nieistotne, liczy się nagłówek Content-Type, a ten plik jest obsługiwany z
text/plain
typem zawartości (co jest celem „surowego” widoku Githuba).Powinieneś naprawdę pobrać kopię pliku lokalnie na swoją stronę i dołączyć ją stamtąd. Nawet jeśli zadziałało z Github, ponieważ nie ładujesz pliku JS asynchronicznie, umieszczenie tego
<script>
tagu w nagłówku strony uzależnia twoją witrynę od dostępności Github.źródło
Jest to celowa funkcja zaprojektowana w celu zapobiegania niektórym atakom XSS .
Jak wyjaśnia Mike West , nie używaj
raw.github.com
jako CDN; zamiast tego użyj stron GitHub .Również jawne kodowanie niezarezerwowanych znaków nie zmieni sposobu traktowania adresu URL.
źródło
Jak bybe podkreśla, problem polega na tym, że prawie cała treść obsługiwana przez raw.github.com jest wysyłana jako plik tekstowy - w ten sposób treść jest renderowana jako zwykły tekst w przeglądarce bez żadnych innych aplikacji lub problemów. W przeciwnym razie dostaniesz się do sytuacji, w której próba wyświetlenia pliku .js może spowodować, że przeglądarka spróbuje go uruchomić, zamiast go pokazać.
Ponadto ani github, ani pages.github nie próbują być CDN. Naprawdę powinieneś:
źródło