Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

悄悄地盗链 github 上的资源

  github 上的资源都可以通过 raw.githubusercontent.com 来查看,但是 raw.githubusercontent.com 上的资源设置了 X-Content-Type-Options nosniff,而且默认的 Content-Type 是错误的。这就意味着即便是 js 文件也无法使用 SCRIPT 标签直接引用这些资源。
  我们直接用 SCRIPT 标签引入会报这个错
Refused to execute script from 'xxx' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.   而且 raw.githubusercontent.com 上的资源还带了 X-Frame-Options: deny 头,这就意味着即便是 html 也无法通过 html 嵌入,否则会报这个错误
Refused to display 'xxx' in a frame because it set 'X-Frame-Options' to 'deny'.   但是,Access-Control-Allow-Origin: * 这个头是存在的,于是我们可以将它作为一般的资源请求下来。比如
<script> fetch('https://raw.githubusercontent.com/jquery/jquery-dist/2.2.0/dist/jquery.min.js') .then(response => response.text()) .then(eval) .then(() => { alert(jQuery.fn.jquery); // 2.2.0 }); </script>   于是我们就成功引用了 raw.githubusercontent.com 上的资源。其它格式的资源也同样可以,比如图片可以获取到数据后转换成 Blob URL,html 可以得到数据后手动写入 IFRAME 里面等。
  当然,以上这些把戏只是玩一玩,装个 B 就好,也许哪天 github 的资源策略就改变了。正式项目中谁要是敢这么玩就直接拖出去剁手。
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^