GitHub 使用 开源项目 Camo 来托管你的图片。Camo 为每个文件生成匿名 URL 代理,隐藏你的浏览器信息和相关细节,防止其他用户获取。 在 GitHub.com 上,URL 以 https://<subdomain>.githubusercontent.com/ 开头,不同子域名取决于你上传图片的方式。
视频也会获得与图片相同格式的匿名 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 提交 Pull Request,向该列表添加你的内容类型。
最近更改的图片未更新
如果你最近更改了图片且在浏览器中可以看到但 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 进行 purge 操作。$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
在私有网络上查看图片
如果图片来自私有网络或需要身份验证的服务器,GitHub 将无法访问它。实际上,任何未登录该服务器的用户都无法查看。
要解决此问题,请将图片迁移到公开可访问的服务。