为了托管你的图像,GitHub 使用了 开源项目 Camo。Camo 为每个文件生成一个匿名 URL 代理,它隐藏了你的浏览器详细信息以及其他用户相关的其他信息。URL 以 https://<subdomain>.githubusercontent.com/
开头,不同的子域取决于你上传图像的方式。
视频也使用与图像 URL 相同格式的匿名 URL,但不会通过 Camo 处理。这是因为 GitHub 不支持外部托管的视频,因此匿名 URL 是指向 GitHub 托管的上传视频的链接。
任何直接或间接收到你的匿名 URL 的人,都可以查看你的图像或视频。为了保持敏感媒体文件的私密性,请将它们限制在私有网络或需要身份验证的服务器上,而不是使用 Camo。
排查 Camo 问题
在极少数情况下,通过 Camo 处理的图像可能不会显示在 GitHub 上。以下是一些你可以采取的步骤来确定问题所在。
Windows 用户需要使用 Git PowerShell(与 GitHub Desktop 一起安装)或下载 curl for Windows。
图像未显示
如果图像在你的浏览器中显示,但在 GitHub 上没有显示,你可以尝试在本地请求它。
-
打开 终端终端Git Bash。
-
使用
curl
请求图像头。$ curl -I https://www.my-server.com/images/some-image.png > HTTP/2 200 > Date: Fri, 06 Jun 2014 07:27:43 GMT > Expires: Sun, 06 Jul 2014 07:27:43 GMT > Content-Type: image/x-png > Server: Google Frontend > Content-Length: 6507
-
检查
Content-Type
的值。在本例中,它是image/x-png
。 -
将该内容类型与 Camo 支持的类型列表 进行比较。
如果您的内容类型不受 Camo 支持,您可以尝试以下几种操作
- 如果您拥有托管图像的服务器,请修改它,使其为图像返回正确的 Content-Type。
- 如果您使用外部服务来托管图像,请联系该服务的支持人员。
- 向 Camo 发起拉取请求,将您的内容类型添加到列表中。
最近更改的图像未更新
如果您最近更改了图像,它在您的浏览器中显示,但在 GitHub 中没有显示,您可以尝试重置图像的缓存。
-
打开 终端终端Git Bash。
-
使用
curl
请求图像头。$ curl -I https://www.my-server.com/images/some-image.png > HTTP/2 200 > Expires: Fri, 01 Jan 1984 00:00:00 GMT > Content-Type: image/png > Content-Length: 2339 > Server: Jetty(8.y.z-SNAPSHOT)
检查 Cache-Control
的值。在本例中,没有 Cache-Control
。在这种情况下
- 如果您拥有托管图像的服务器,请修改它,使其为图像返回
Cache-Control
为no-cache
。 - 如果您使用外部服务来托管图像,请联系该服务的支持人员。
如果 Cache-Control
设置为 no-cache
,请通过 GitHub 支持门户 联系我们,或搜索 GitHub 社区讨论。
从 Camo 的缓存中删除图像
清除缓存会强制所有 GitHub 用户重新请求图像,因此您应该谨慎使用它,并且仅在上述步骤无效的情况下使用。
-
打开 终端终端Git Bash。
-
使用
curl -X PURGE
在 Camo URL 上清除图像。$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
在私有网络上查看图像
如果图像从私有网络或需要身份验证的服务器提供,则 GitHub 无法查看它。实际上,在没有要求用户登录服务器的情况下,任何用户都无法查看它。
要解决此问题,请将图像移动到公开可用的服务。
进一步阅读
- GitHub 博客上的 "代理用户图像"