首页 > 解决方案 > 没有迷彩的 Github 图片

问题描述

我在代理后面有一个自托管的 SonarQube 实例。

我想将徽章包含在我的私人 GitHub 存储库的 readme.md 中。此 repo 仅由代理后面的个人访问,因此他们在查看图像时不会遇到问题。

但是,GitHub 正在将它们转换为https://camo.githubusercontent.com/blahblahblah. 这些都呈现为损坏的图像,检查控制台 camo.githubusercontent.com 为我的图像返回 404,大概是因为 camo 看不到图像。

我知道 Github 这样做是出于匿名和缓存的原因,但这很烦人。在线搜索发现 GitHub 对此行为感到非常沮丧,但这主要是针对他们的过度缓存,解决方案似乎是由图像提供者设置标头。但是,我们不想将图像暴露给 camo.githubusercontent.com 或其他任何人。

我尝试使用降价格式和 <img src=""> 添加图像,但没有骰子。

我们如何让 GitHub 提供 GitHub 看不到但客户端可以看到的图像?

标签: github

解决方案


任何将呈现在 GitHubREADME.md文件(或其他呈现的 HTML 格式)中的图像都将使用 camo 呈现。有几个原因。一是性能:GitHub 为大量用户提供服务,如果他们不这样做,页面加载时间就会很糟糕。另一个是隐私:让回购所有者嵌入跟踪图像是不可接受的。最后,还有 DDoS 角度:外部托管图像允许拥有相当流行的存储库的恶意存储库所有者对他们选择的任何站点进行 DDoS 攻击,只需加载其中一个图像即可。

没有办法禁用迷彩,因为它内置在渲染管道中。它不是特定于 Markdown 的;它也适用于原始 HTML 文件、AsciiDoc 和任何其他生成 HTML 的文件。您可以通过链接提供某种仪表板或以其他方式使用链接,或者通过data:URL 以某种方式使用链接,但除此之外,就图像而言,如果它作为文件内容的一部分呈现,它将通过迷彩。

即使您可以以某种方式欺骗渲染管道以允许未经代理的图像通过,Content-Security-Policy标头也会阻止它在您的浏览器中渲染,并且您的浏览器会将其作为安全违规报告给 GitHub。


推荐阅读