В заголовке моей HTML-страницы есть:
<script src="https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js"></script>
Когда я загружаю страницу в своем браузере (Google Chrome v 27.0.1453.116) и включаю инструменты разработчика, он говорит:
Отказался выполнять скрипт из « https://raw.github.com/cloudhead/less.js/master/dist/less-1.3.3.js », потому что его тип MIME («text / plain») не является исполняемым, и строгая проверка типов MIME включена.
Действительно, скрипт не запустится. Почему Chrome считает, что это простой текстовый файл? У него явно есть .js
расширение файла.
Поскольку я использую HTML5, я пропустил type
атрибут, поэтому я подумал, что это может быть причиной проблемы. Поэтому я добавил type="text/javascript"
к <script>
метке, и получил тот же результат. Я даже попробовал type="application/javascript"
и все еще получил ту же ошибку.
Тогда я попытался изменить это type="text/plain"
просто из любопытства. Браузер не вернул ошибку, но, конечно, JavaScript тоже не работал.
Наконец я подумал, что точки в имени файла могут сбить браузер. Поэтому в моем HTML-коде я изменил все точки на escape-символ URL %2E
:
<script src="https://raw.github.com/cloudhead/less%2Ejs/master/dist/less-1%2E3%2E3.js"></script>
Это все еще не сработало. Единственное, что действительно работает (т. Е. Браузер не выдает ошибку и JS успешно запускается), это если я загружаю файл, загружаю его в локальный каталог, а затем изменяюsrc
значение на локальный файл. Я бы предпочел не делать этого, так как я пытаюсь сэкономить место на своем собственном сайте.
Как заставить Chrome распознавать, что связанный файл на самом деле является типом JavaScript?
источник
Дек. 2018 г.
RawGit в настоящее время находится в состоянии заката из-за злонамеренного использования, поэтому вместо него рекомендуется использовать один из следующих сервисов:
Оригинальный пост
Rawgithub.com позволяет пользователям брать «сырые» версии Git и превращать их в URL-адрес, используемый в
<script>
тегах. Его довольно просто использовать, просто удалите первый.
из необработанного URL. Например, это:превратится в это
а затем вы помещаете его в
<script>
тег с соответствующим типом. Так просто!Они ограничивают количество запросов, потому что они предназначены только для разработки, а не для производства.
2014 редактировать
Как упоминал Рейндериен, rawgithub теперь просто rawgit, поэтому новая ссылка на скрипт будет
источник
Расширение файла не имеет значения, важен заголовок Content-Type, и этот файл обслуживается
text/plain
типом контента (который является целью «сырого» представления Github).Вы действительно должны скачать копию файла локально на свой сайт и включить его оттуда. Даже если это работает с Github, поскольку вы не загружаете файл JS асинхронно, размещение этого
<script>
тега в заголовке страницы делает ваш сайт зависимым от доступности Github.источник
Это преднамеренная функция, предназначенная для предотвращения определенных атак XSS .
Как объясняет Майк Уэст , не используйте
raw.github.com
в качестве CDN; использовать GitHub Pagesвместо этого .Кроме того, явное кодирование незарезервированных символов не изменит способ обработки URL.
источник
Как указывает bybe проблема заключается в том, что почти весь контент, обслуживаемый raw.github.com, отправляется в виде текстового файла - таким образом, контент отображается в вашем браузере в виде обычного текста без каких-либо других приложений или проблем. В противном случае вы попадаете в ситуацию, когда попытка просмотреть файл .js может привести к тому, что браузер попытается запустить его, а не покажет его вам.
Кроме того, ни github, ни pages.github не пытаются быть CDN. Вы действительно должны:
источник