直接来自GitHub的JavaScript文件等Hotlink资源

时间:2013-12-01 10:44:28

标签: javascript github

我问question about including resources from GitHub,答案是使用原始链接:

https://raw.github.com/username/repository/branch/file.js

我正在尝试使用以下内容包含脚本:

<script
   type="text/javascript"
   src="https://raw.github.com/username/repo/master/src/file.js"
></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包含在脚本中。

如何修复错误?

2 个答案:

答案 0 :(得分:31)

是的,Github changed this in April, 2013

  

我们在2011年将原始网址回复添加了X-Content-Type-Options: nosniff标头作为打击热链接的第一步。这会强制浏览器根据Content-Type标题处理内容。这意味着当我们为文件的原始视图设置Content-Type: text/plain时,浏览器将拒绝将该文件视为JavaScript或CSS。

但是感谢http://combinatronics.com/我们可以包含GH脚本。唯一的变化是raw.github.com成为combinatronics.com

<script
   type="text/javascript"
   src="https://combinatronics.com/username/repo/master/src/file.js"
></script>

该项目为hosted on Github being open-source

是的,@ Lix是正确的。这些文件不是从Github提供的,而是来自combinatronics。


我找到的另一个解决方法是代替:

<script
   type="text/javascript"
   src="https://combinatronics.com/username/repo/master/src/file.js"
></script>

你可以使用$.getScript jQuery函数:

<script>
  $.getScript("https://combinatronics.com/username/repo/master/src/file.js", function () {
    /* do something when loaded */
  });
</script>

答案 1 :(得分:4)

我找到的最佳解决方案是使用GitHub页面:https://pages.github.com/

限制是你只能使用repo中的一个分支来保存你的脚本(即:gh-pages branch)

样本使用
将test.js脚本推送到REPO的gh-pages分支。

该脚本位于yourusername.github.io/REPO/test.js(可能需要大约10分钟才能更新)

其他解决方案
http://rawgithub.com如果您不更改脚本(CDN永远缓存特定网址),则有利于开发和生产(使用CDN)。