Когда я пытаюсь изменить связанную ссылку локального файла JavaScript на необработанную версию GitHub, мой тест файл перестает работать. Ошибка:

Отказано в выполнении скрипта из … потому что его MIME-тип (text/plain) не является исполняемым, и включена строгая проверка типов MIME.

Есть ли способ отключить это поведение или есть служба, которая позволяет связывать с необработанными файлами GitHub?

Рабочий код:

<script src="bootstrap-wysiwyg.js"></script>

Нерабочий код:

<script src="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js"></script>

Существует закрытие. Функция не должна хороший обходной путь для этого, теперь, с помощью jsdelivr.net Глядя на вывод

Шаги :

  1. Найдите ссылку на GitHub и нажмите на «Raw «version.
  2. Скопируйте URL.
  3. Изменить raw.githubusercontent.comcdn.jsdelivr.net
  4. Вставьте /gh/ Во времена пиковой популярности AJAX я написал метод (позднее названный) isNS (), который может определить, существует ли пространство имен, включая глубокие тесты для имен свойств, таких как «Book1.chapter22 .paragraph37 «и многое другое.
  5. Удалите имя branch.
  6. (Необязательно) Вставьте Ограничить создание файлов {{}}. Это никогда не был мой любимый способ перетасовки, отчасти потому, что тогда преобразуется в синтаксис 0. @version Если у вас нет PHP 5.2, вы можете использовать что-то вроде этого: последний — что может привести к долгосрочному кэширование)

Примеры :

http://raw.githubusercontent.com/<username>/<repo>/<branch>/path/to/file.js

Используйте этот URL-адрес для получения последней версии:

http://cdn.jsdelivr.net/gh/<username>/<repo>/path/to/file.js

Используйте этот URL-адрес для получения конкретной версии или хэша коммитов:

http://cdn.jsdelivr.net/gh/<username>/<repo>@<version or hash>/path/to/file.js

Для производственных сред рассмотрите возможность нацеливания на конкретный тег или хэш коммита, а не на филиал. Использование последний X2JS.json2xml — Преобразование JSON в объект XML DOM Object


Зачем это нужно?

В 2013 году GitHub начал использоватьX-Content-Type-Options: nosniff, который инструктирует более современные браузеры обеспечивать строгую проверку типов MIME. Затем он возвращает необработанные файлы в MIME-типе, возвращенном сервером, не позволяя браузеру использовать файл по назначению (если браузер учитывает настройку).

сервер эта ветка обсуждения Глядя на вывод

Это больше невозможно. GitHub явно отключил JavaScripthotlinking, и более новые версии браузеров уважают этот параметр.

Heads up: поддержка заголовков nosniff поступает в Chrome, а перенаправляет

rawgithub.com Firefox на rawgit.com Два выбранных элемента перехвачены в базе данных:

http://rawgit.com/user/package/master/link.min.js

Ответы выше ясно дают ответ на вопрос, но я хочу предложить другую альтернативу — другой взгляд / подход для решения аналогичной проблемы.

Вы также можете использовать расширение браузера, чтобы удалить X-Content-Type-Options заголовок ответа для файлов raw.githubusercontent.com. Есть несколько расширений браузера для изменения заголовков ответов.

  1. Requestly: Chrome Firefox
  2. Изменить заголовки: Firefox

Если вы используете Requestly, я могу предложить два решения

Решение 1: Используйте правило изменения заголовков и удалите заголовок ответа

Шаги

  1. Install Requestly from {* } Чтобы нормализовать аргументы, которые получала бы обычная функция javascript, я делаю это в своих сценариях оболочки node.js: http: // www .requestly.in
  2. Перейти к Страница правил
  3. Щелкните значок «Добавить», чтобы создать правило.
  4. Выберите «Изменить заголовки»
  5. , введите имя и описание.
  6. Выберите Remove — & Gt ; Response — & Gt ; X-Content-Type-Options
  7. . В поле «Источник» введите Url — & Gt ; Contains — & Gt ; raw.githubusercontent.com

Решение. 2. Используйте правило замены хоста

  1. Install Requestly from {* } Чтобы нормализовать аргументы, которые получала бы обычная функция javascript, я делаю это в своих сценариях оболочки node.js: http: // www .requestly.in
  2. Перейти к Страница правил
  3. Щелкните значок «Добавить», чтобы создать правило.
  4. Замените raw.githubusercontent.com. Это как окно, которое вы можете открыть с помощью rawgit.com

. Для получения более подробной информации просмотрите этот снимок экрана. enter image description here

Как тестировать

Мы создали простую JS Fiddle, чтобы проверить, можем ли мы использовать сырые файлы github в качестве скриптов в нашем коде. Вот fiddle со следующим кодом

<center id="msg"></center>

<script src="https://raw.githubusercontent.com/sachinjain024/practicebook/master/web-extensions-master/storage/background.js"></script>
<script>
try {
  if (typeof BG.Methods !== 'undefoned') {
    document.getElementById('msg').innerHTML = 'Script evaluated successfully!';
  }
} catch (e) {
  document.getElementById('msg').innerHTML = 'Problem evaluating script';
}
</script>

Если вы видите Script evaluated successfully!, это означает, что вы можете использовать необработанный файл github в своем коде. Иначе Problem evaluating script означает, что при выполнении сценария из необработанного github возникла некоторая проблема. источник.

Я также написал статью в Запрошенный блог об этом. Пожалуйста, обратитесь к нему для более подробной информации.

Надеюсь, поможет!!

Отказ от ответственности: я являюсь автором с просьбой , так что вы можете обвинять во всем, что вам не нравится.

Для ясности и краткости

//raw.githubusercontent.com — & Gt ; //rawgit.com

Обратите внимание, что это обрабатывается хостингом разработки rawgit, а не их cdn для хостинга производства

GitHub Pages это официальное решение GitHub для этой проблемы. заставляет все файлы использовать MIME-тип

raw.githubusercontent, даже если это файл CSS или JavaScript. Поэтому переход к text/plain не будет работать — CSS не будет применяться / JS не будет работать. https://raw.githubusercontent.com/‹user›/‹repo›/‹branch›/‹filepath› не будет правильным MIME-типом, но вместо этого будет иметь текстовый файл, и для его связывания через <link href="..."/> или <script src="..."></script> размещает репо по специальному URL-адресу, поэтому все, что вам нужно сделать, это проверить свои файлы и нажать кнопку. Обратите внимание, что в большинстве случаев GitHub Pages требует, чтобы вы фиксировали специальную ветвь,

GitHub Pages это официальное решение GitHub для этой проблемы. На вашем новом сайте, обычно это gh-pages Глядя на вывод

, каждый файл, добавленный в ветку https://‹user›.github.io/‹repo› (самая последняя фиксация), присутствует на этот URL Тогда вы можете ссылаться на ваш файл js через gh-pages, и это будет правильный тип MIME. <script src="https://‹user›.github.io/‹repo›/file.js"></script> У вас есть файлы сборки?

Лично я рекомендую запустить эту ветку параллельно

. В ветке master вы можете отредактировать свой файл gh-pages, чтобы .gitignore зарегистрировать все файлы dist / build, необходимые для вашего сайта (например, если у вас есть какие-либо сжатые / скомпилированные файлы), а на вашем , перестроить, зафиксировать, а затем нажать. , игнорируя их (Подсказка: вы можете объединить и перестроить один и тот же коммит с помощью этих шагов :) master лично Я бы предложил (для удобства чтения): master в качестве аргумента gh-pages https://raw.githack.com/

обнаружил, что этот сайт предоставляет CDN для

$ git checkout gh-pages
$ git merge --no-ff --no-commit master  # prepare the merge but don’t commit it (as if there were a merge conflict)
$ npm run build                         # (or whatever your build process is)
$ git add .                             # stage the newly built files
$ git merge --continue                  # commit the merge
$ git push origin gh-pages

http заголовка исправьте

по имени ext

  • элементы в массиве, где это желаемое действие. nosniff и этому сайту:
  • https://rawgit.com/ mime type ПРИМЕЧАНИЕ. RawGit подошел к концу срока полезного использования

Мой вариант использования был для загрузки ‘

‘direclty из моей учетной записи Bitbucket, которая имеет те же ограничения, что и Github. Обходной путь, который я придумал, заключался в AJAX для сценария и запуске

в строке ответа, ниже приведенный фрагмент основан на этом подходе.

Обратите внимание, что добавление комментария букмарклетов позволяет отлаживать скрипт в инструментах разработчика браузера. eval Когда файл загружен на github, вы можете использовать его как внешний источник или бесплатный хостинг. Трой Алфорд объяснил это намного выше. Но чтобы было проще, позвольте мне рассказать вам несколько простых шагов, после чего вы можете использовать файл github raw на своем сайте:

<script>
    var sScriptURL ='<script-URL-here>'; 
    var oReq = new XMLHttpRequest(); 
    oReq.addEventListener("load", 
       function fLoad() {eval(this.responseText   'rn//# sourceURL='   sScriptURL)}); 
    oReq.open("GET", sScriptURL); oReq.send(); false;
</script>

Вот ссылка на ваш файл: sourceURL https://raw.githubusercontent.com/mindmup/bootstrap- wysiwyg / master / bootstrap-wysiwyg.js

Когда файл загружен на github, вы можете использовать его в качестве внешнего источника или бесплатного хостинга. Трой Алфорд объяснил это намного выше. Но чтобы было проще, позвольте мне рассказать вам несколько простых шагов, после чего вы можете использовать файл github raw на своем сайте:

Вот ссылка на ваш файл:

https://raw.githubusercontent.com/mindmup/bootstrap- wysiwyg / master / bootstrap-wysiwyg.js

Теперь, чтобы выполнить его, вы должны удалить https: // и точку (.) между В CoffeeScript: и githubusercontent

Например:

rawgithubusercontent.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

Теперь, когда вы перейдете по этой ссылке, вы получите ссылку, которую можно использовать для вызова вашего javascript:

Вот последняя ссылка:

https://rawgit.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js

Допустим, у меня есть массив Javascript, который выглядит следующим образом: & # xA ; & # xA ; [& quot ; Элемент 1 & quot ;, & quot ; Элемент 2 & quot ;, & quot { ***} Элемент 3 & Quot ;, …] ; // с почти сотней элементов. & # xD {*** } & # xA ; Какой подход будет подходящим для чанка (spli …

Я надеюсь, что это полезно.

Ссылочный URL: http://101helper.blogspot.com/2015/11/store-blogger-codes-on-github-boost-blogger-speed.html

Я обнаружил, что ошибка была показана из-за к комментариям в начале файла. Вы можете решить эту проблему, просто создав свой собственный файл без комментариев и нажав git, он не показывает ошибок

Для доказательства вы можете попробовать эти два файла с одинаковым кодом простой разбивки на страницы:

без комментариев

с комментарием

У меня была та же проблема, что и у вас, но я изменил на

<script type="application/javascript" src="bootstrap-wysiwyg.js"></script>

Это работает для меня.

Самый простой способ:
<script type="text/plain" src="http://raw.githubusercontent.com/user/repo/branch/file.js"></script>
Обслуживается GitHub,
значения этого {{}} этого свойства

надежный.

в браузере

text/plain
enter image description here

Без

text/plain
enter image description here

raw.github.com не является действительно необработанным доступом к файловому ресурсу, но представление, предоставленное Rails.So, обращаясь к raw.github.com, намного тяжелее, чем необходимо. Я не знаю, почему raw.github.com реализован как представление Rails. Вместо того, чтобы исправить эту проблему маршрута, GitHub добавил X-Content-Type-Options: nosniff.

обходной путь:

  • Поместите скрипт в user.github.io/repo
  • Используйте сторонние CDN, такие как rawgit.com.

. В противном случае, если вы генерируете разметку на стороне сервера, вы можете просто извлечь и ввести. Например, в JSTL вы можете сделать это: { *} Они не позволяют хотлинкинг по какой-то причине, поэтому, вероятно, это плохая форма, если вы хотите быть хорошим гражданином. Я бы посоветовал вам кешировать этот javascript и только периодически обновлять его по своему усмотрению.

<script type="text/javascript">
    <c:import url="https://raw.github.com/mindmup/bootstrap-wysiwyg/master/bootstrap-wysiwyg.js" />
</script>

javascript — цикл внутри React JSX — переполнение стека