为了托管您的图像,GitHub 使用了开源项目 Camo。Camo 为每个文件生成一个匿名的 URL 代理,从而隐藏您的浏览器详细信息以及其他用户相关的其他信息。在 GitHub.com 上,URL 以https://<子域>.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 发出拉取请求,以将您的内容类型添加到列表中。
最近更改的图像未更新
如果您最近更改了图像,并且它在您的浏览器中显示但在 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 博客上的“代理用户图像”