Для размещения изображений GitHub использует проект Camo с открытым кодом. Camo создает анонимный прокси URL-адреса для каждого файла, который скрывает сведения о вашем браузере и связанную с ним информацию от других пользователей. В GitHub.comURL-адрес начинается https://<subdomain>.githubusercontent.com/
с разных поддоменов в зависимости от способа отправки изображения.
Видео также получают анонимные URL-адреса в том же формате, что и URL-адреса изображений, но не обрабатываются через Camo. Это связано с тем, что GitHub не поддерживает видео, размещенные на внешнем хостинге, поэтому анонимный URL-адрес представляет собой ссылку на загруженное видео, размещенное на GitHub.
Любой, кто получит анонимный URL-адрес напрямую или косвенно, может просмотреть изображение или видео. Чтобы конфиденциальные файлы мультимедиа оставались таковыми, ограничьте их использование частной сетью или сервером, требующим проверки подлинности, вместо использования Camo.
Устранение неполадок с Camo
В редких случаях изображения, обработанные через Camo, могут не отображаться на GitHub. Ниже приведены некоторые действия, которые можно выполнить, чтобы определить, в чем проблема.
Пользователям Windows потребуется либо применять Git PowerShell (который устанавливается вместе с GitHub Desktop), либо загрузить curl для 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, можно попробовать выполнить несколько действий:
- Если вы являетесь владельцем сервера, на котором размещено изображение, измените его, чтобы он возвращал правильный тип содержимого для изображений.
- Если вы используете внешнюю службу для размещения изображений, обратитесь в ее службу поддержки.
- Создайте запрос на вытягивание в 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
, свяжитесь с us через портал поддержки GitHub или выполните поиск на Обсуждения сообщества GitHub.
Удаление изображения из кэша Camo
Очистка кэша заставляет каждого пользователя GitHub повторно запрашивать изображение, поэтому ее следует применять очень экономно и только в том случае, если описанные выше шаги не сработали.
-
Откройте ТерминалТерминалGIT Bash.
-
Очистите изображение, используя
curl -X PURGE
на URL-адресе Camo.$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
Просмотр изображений в частных сетях
Если изображение передается из частной сети или с сервера, для которого требуется проверка подлинности, оно не может быть просмотрено GitHub. Фактически ни один пользователь не может просмотреть его, не запрашивая вход на сервер.
Чтобы устранить эту проблему, переместите изображение в общедоступную службу.
Дополнительные материалы
- Использование прокси для пользовательских изображений в the GitHub Blog