GitHub Raw 以 text/plain 返回文件,浏览器据此拒绝执行脚本。粘贴 blob / raw 链接,立刻得到三种 CDN 写法、可复制的 <script> 标签,以及一份不给糖就捣蛋的 MIME 说明书。
Why it breaks
text/plain 这身衣服。当你写 <script src="…raw.githubusercontent.com/…">,浏览器会先看响应头里的 Content-Type。GitHub 明确说「这是纯文本」,再加上 X-Content-Type-Options: nosniff,浏览器连猜都不猜 —— 直接拒绝执行。
请求:一个勤勤恳恳的 script 标签。
GET /moment/moment/develop/moment.js host: raw.githubusercontent.com HTTP/2 200 content-type: text/plain; charset=utf-8 x-content-type-options: nosniff content-disposition: inline
这不是 bug,是故意上锁。如果任何人都能让 raw.githubusercontent.com 以 JavaScript 的 MIME 返回内容,它就会变成一个人人可用的免费脚本托管 / XSS 跳板。于是 GitHub 统一按纯文本发,并加上 nosniff。
CDN 则不同:jsDelivr、Statically、raw.githack 会把仓库文件按扩展名推断为 application/javascript,再配长缓存发出去 —— 合同签对了,脚本才能上工。
所以正确的姿势不是「求浏览器通融」,而是换一个愿意正确声明 MIME 的地址。
application/javascript→
浏览器:放行→
执行
安全声明:本页只做字符串拼接。它不会请求你粘贴的 GitHub / CDN 地址,不会把远端 JS 插入本页,不会上传任何内容,也没有任何代理或后端。上面那个安检机是纯 CSS/JS 动画,不是真的 fetch。复制走标签后,请自行审查脚本来源与内容。