有可能让GitHub Readme镜像遵循重定向吗



我正试图在GitHub上的私有存储库的Readme中添加一个测试覆盖率徽章。我们的持续集成过程将图像保存到一个安全的谷歌云存储桶中,公众无法访问该存储桶,并且应该保持这种状态。

谷歌的授权层足够智能,如果我转到图像的URL,我会自动重定向到具有有效的自动生成签名URL的资源。

例如,如果我转到http://storage.cloud.google.com/secret-files/mysecretfile.png,那么如果我登录并被允许查看它,我会自动重定向到类似https://blahblah-apidata.googleusercontent.com/download/storage/v1/b/secret-files/o/mysecretfile.png?key=verylongkey的位置,在那里我可以加载图像。

这看起来很完美。参考GitHub Readme中的规范路径,经过验证的用户可以看到图像,未经验证的用户仍然被阻止,我们不必公开文件,也不必做任何复杂的事情。

只是GitHub正在代理镜像请求,这意味着它将始终未经身份验证。我的浏览器正在加载类似https://camo.githubusercontent.com/mysecretimage.png的内容。

有没有一个聪明的方法来解决这个问题?还是我需要回到绘图板上?

github.com上的所有图像都使用Camo图像代理进行代理。这有几个原因:

  • 它保护了用户的隐私。文档不可能通过将用户引导到其他网站或使用cookie来跟踪用户
  • 这意味着图像可以缓存并以适当的大小提供
  • GitHub可以有一个非常严格的内容安全策略,不允许从不受信任的网站加载,这意味着任何意外的安全问题(如XSS(都不太可能奏效

注意最后一部分。即使你找到了一些偷偷摸摸的方法,让另一个图像URL在网站中正确呈现,你的浏览器也不会加载它,因为它违反了网站发送的Content-Security-Policy标头,而且,你的网站浏览器会把这件事告诉GitHub提供的报告URL。

因此,你提供的任何图像URL都需要GitHub的图像代理可读,并且不可能为不同的用户提供不同的内容。

最新更新