为了托管您的图像,GitHub 使用了 开源项目 Camo。Camo 为每个文件生成一个匿名的 URL 代理,从而隐藏您的浏览器详细信息以及其他用户相关的其他信息。在 GitHub.com 上,URL 以 https://<subdomain>.githubusercontent.com/
开头,不同的子域取决于您上传图像的方式。
视频也使用与图像 URL 相同的格式获取匿名 URL,但不会通过 Camo 进行处理。这是因为 GitHub 不支持外部托管的视频,因此匿名 URL 是指向 GitHub 托管的上传视频的链接。
任何直接或间接收到您的匿名 URL 的人都可以查看您的图像或视频。要使敏感媒体文件保持私密,请将它们限制在私有网络或需要身份验证的服务器上,而不是使用 Camo。
排查 Camo 问题
在极少数情况下,通过 Camo 处理的图像可能不会显示在 GitHub 上。以下是一些您可以采取的步骤来确定问题所在。
Windows 用户需要使用 Git PowerShell(与 GitHub Desktop 一起安装)或下载 适用于 Windows 的 curl。
图像未显示
如果图像在浏览器中显示但在 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 不支持您的内容类型,您可以尝试以下操作
- 如果您拥有托管图像的服务器,请对其进行修改,使其返回图像的正确内容类型。
- 如果您正在使用外部服务来托管图像,请联系该服务的支持人员。
- 向 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。
-
使用 Camo URL 上的
curl -X PURGE
清除图像。$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
在私有网络上查看图像
如果图像来自私有网络或需要身份验证的服务器,则 GitHub 无法查看它。实际上,在未要求用户登录服务器的情况下,任何用户都无法查看它。
要解决此问题,请将图像移动到可公开访问的服务。
进一步阅读
- GitHub 博客上的“代理用户图像”