当我试图将本地JavaScript文件的链接引用更改为GitHub原始版本时,我的测试文件停止工作。错误是:

拒绝执行脚本…因为它的MIME类型(文本/纯)是不可执行的,并且启用了严格的MIME类型检查。

有没有办法禁用这种行为,或者有没有服务允许链接到GitHub原始文件?

工作代码:

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

故障代码:

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

当前回答

当一个文件上传到github,你可以使用它作为外部源或免费托管。Troy Alford在上面已经解释过了。但是为了让它更简单,让我告诉你一些简单的步骤,然后你可以在你的网站上使用一个github原始文件:

这是你的文件链接:

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

现在要执行它,你必须删除https://和点(.)在原始和githubusercontent之间

是这样的:

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

现在,当你访问这个链接时,你会得到一个链接,可以用来调用你的javascript:

这是最后一个链接:

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

类似地,如果你托管一个css文件,你必须这样做如上所述。这是最简单的方法来获得简单的链接来调用你的外部css或javascript文件托管在github上。

我希望这对你有帮助。

其引用形式

其他回答

这已经不可能了。GitHub明确禁用了JavaScript 盗链和较新版本的浏览器都支持该设置。

注意:Chrome和Firefox将支持nosniff头文件

现在有一个很好的解决方法,使用jsdelivr.net。

步骤:

在GitHub上找到你的链接,然后点击“原始”版本。 复制URL。 将raw.githubusercontent.com更改为cdn.jsdelivr.net 在用户名之前插入/gh/。 删除分支名称。 (可选)插入你想要链接到的版本,如@version(如果你不这样做,你将得到最新的-这可能会导致长期缓存)


例子:

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

对于生产环境,考虑针对特定的标记或提交哈希,而不是针对分支。使用最新的链接可能会导致文件的长期缓存,导致在推送新版本时无法更新链接。通过提交散列或标记链接到文件使链接对版本唯一。


为什么需要这样做?

2013年,GitHub开始使用X-Content-Type-Options: nosniff,它指导更现代的浏览器强制执行严格的MIME类型检查。然后,它以服务器返回的MIME类型返回原始文件,防止浏览器按预期使用该文件(如果浏览器遵守设置)。

关于这个主题的背景知识,请参考这个讨论线程。

例子


原始

https://raw.githubusercontent.com/antelove19/qrcodejs/master/qrcode.min.js

cdn.jsdelivr.net

https://cdn.jsdelivr.net/gh/antelove19/qrcodejs/qrcode.min.js

rawgithub。com重定向到rawgithub。com上面的例子是

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

https://raw.githack.com/

发现这个网站提供了一个CDN

删除nosniff HTTP报头 修复mime类型的ext名称

这个网站:

https://rawgit.com/

注意:RawGit已经达到了它的使用寿命