为了托管您的图像,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 一起安装)或下载 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 支持,您可以尝试以下几种操作
- 如果您拥有托管图片的服务器,请修改它,使其为图片返回正确的 content type。
- 如果您使用外部服务托管图片,请联系该服务的支持人员。
- 向 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 上清除图片。$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
在私有网络上查看图片
如果图片来自私有网络或需要身份验证的服务器,GitHub 无法查看它。事实上,任何用户都无法查看它,除非要求他们登录服务器。
要解决此问题,请将图片移动到公开可用的服务。
进一步阅读
- ""代理用户图像"" 在 GitHub 博客上