今天又与这个问题相遇了,Orz,还是研究一下解决方法和出现原因吧。
刚刚在github上传了一个js文件,想让这个文件被其他网页引用,于是贴出了这个文件的raw版本的地址。但是却就遇到了这样的问题。
这就是出现错误的代码
1 2 3 4 5 6 7 |
|
解决方法
将上面的链接中的raw.githubusercontent.com换成rawgit.com即可,此例中的网址最终为 https://rawgit.com/androidyue/weekly-scripts/master/javascript/target_blank_link.js
原因
因为raw.githubusercontent.com在Response中设置了X-Content-Type-Options:nosniff,告诉浏览器强制检查资源的MIME,进行加载。
下面就是未处理的HTTP Response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
X-Content-Type-Options:nosniff 是神马
1 如果服务器发送响应头 “X-Content-Type-Options: nosniff”,则 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。这是一种安全功能,有助于防止基于 MIME类型混淆的攻击。
2 服务器发送含有 “X-Content-Type-Options: nosniff” 标头的响应时,此更改会影响浏览器的行为。
3 如果通过 styleSheet 参考检索到的响应中接收到 “nosniff” 指令,则 Windows Internet Explorer 不会加载“stylesheet”文件,除非 MIME 类型匹配 “text/css”。
4 如果通过 script 参考检索到的响应中接收到 “nosniff” 指令,则 Internet Explorer 不会加载“script”文件,除非 MIME 类型匹配以下值之一:
- “application/ecmascript”
- “application/javascript”
- “application/x-javascript”
- “text/ecmascript”
- “text/javascript”
- “text/jscript”
- “text/x-javascript”
- “text/vbs”
- “text/vbscript”
该部分参考减少 MIME 类型的安全风险