Ресурсы Hotlink, такие как файлы JavaScript непосредственно из GitHub
Я спросил вопрос о включении ресурсов из GitHub, и ответ заключался в использовании необработанной ссылки:
https://raw.github.com/username/repository/branch/file.js
Я пытаюсь включить script, используя:
<script
type="text/javascript"
src="https://raw.github.com/username/repo/master/src/file.js"
></script>
но я получаю следующую ошибку:
Отказано в выполнении script из https://raw.github.com/username/repo/master/src/file.js ', потому что его тип MIME (' text/plain ') не является исполняемым, и включена строгая проверка типа MIME.
Есть ли альтернативы для исправления этой ошибки?
Пример использования
Я не использую это в производстве, а для демонстрационной страницы:
project-repository-from-github
├─ master
│ ├─ src
│ │ └─ my-jQuery-plugin.js
│ └─ README.md
└─ gh-pages
├─ css
│ └─ style.css
└─ index.html
На странице index.html я хочу иметь последнюю сборку my-jQuery-plugin.js. Итак, я бы включил необработанный URL-адрес в script.
Как исправить ошибку?
Ответы
Ответ 1
Да, Github изменил это в апреле 2013 г.:
Мы добавили заголовок X-Content-Type-Options: nosniff
к нашим необработанным URL-адресам еще в 2011 году в качестве первого шага в борьбе с hotlinking. Это приводит к тому, что браузер обрабатывает контент в соответствии с заголовком Content-Type
. Это означает, что когда мы устанавливаем Content-Type: text/plain
для сырых представлений файлов, браузер отказывается рассматривать этот файл как JavaScript или CSS.
Но благодаря http://rawgit.com/ мы можем включить сценарии GH. Единственное изменение заключается в удалении точки из raw.github.com
, которая становится rawgithub.com
:
<script
type="text/javascript"
src="https://rawgit.com/username/repo/master/src/file.js"
></script>
Проект размещен на Github, являющемся открытым исходным кодом.
И да, @Lix верна. Файлы не подаются от Github, а с сайта rawgit.
Другим обходным решением, которое я нашел, является то, что вместо:
<script
type="text/javascript"
src="https://raw.github.com/username/repo/master/src/file.js"
></script>
вы можете использовать функцию $.getScript
jQuery:
<script>
$.getScript("https://raw.github.com/username/repo/master/src/file.js", function () {
/* do something when loaded */
});
</script>
Ответ 2
Лучшим решением для меня, которое я нашел, является использование страниц GitHub: https://pages.github.com/
Ограничение состоит в том, что вы можете использовать только одну ветку из репо для хранения ваших скриптов (а именно: ветвь gh-pages)
использование образца
нажмите test.js script на ветвь gh-pages REPO.
script находится там на yourusername.github.io/REPO/test.js(обновление может занять около 10 минут)
Другие решения
http://rawgithub.com полезен как для разработки, так и для производства (с CDN), если вы не изменяете свои сценарии (CDN кэширует определенный URL навсегда).