Подтвердить что ты не робот

Ресурсы 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.

Как исправить ошибку?

4b9b3361

Ответ 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 навсегда).