Para hospedar suas imagens, o GitHub usa o projeto de código aberto Camo. A Camo gera um proxy de URL anônimo para cada arquivo que oculta os detalhes do seu navegador e informações relacionadas de outros usuários. A URL começa com https://<subdomain>.githubusercontent.com/
, com subdomínios diferentes, dependendo de como você carregou a imagem.
Os vídeos também recebem URLs anônimas com o mesmo formato que as URLs da imagem, mas não são processados através da Camo. Isto ocorre porque GitHub não é compatível vídeos hospedados externamente. Portanto, a URL anônima é um link para o vídeo enviado hospedado por GitHub.
Qualquer pessoa que receber a sua URL anônima, direta ou indiretamente, poderá visualizar a sua imagem ou vídeo. Para manter arquivos de mídia sensíveis privados, restrinja-os a uma rede privada ou a um servidor que exige autenticação em vez de usar a Camo.
Solucionar problemas com o Camo
As imagens que são processadas por meio do Camo raramente não aparecem no GitHub. Veja a seguir algumas etapas que podem ser seguidas para determinar onde está o problema.
Os usuários do Windows precisarão usar o Git PowerShell (que é instalado com o GitHub Desktop) ou baixar o cURL para Windows.
Uma imagem não está sendo exibida
Se uma imagem estiver sendo exibida no seu navegador mas não em GitHub, você poderá tentar solicitá-la localmente.
-
Abra TerminalTerminalGit Bash.
-
Solicite os cabeçalhos de imagem usando
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
-
Verifique o valor de
Content-Type
. Nesse caso, useimage/x-png
. -
Verifique esse tipo de conteúdo em relação à lista de tipos com suporte do Camo.
Se o tipo de conteúdo não for compatível com o Camo, você poderá tentar várias ações:
- Se tiver posse do servidor que está hospedando a imagem, modifique-o para que ele retorne um tipo de conteúdo correto para imagens.
- Se estiver usando um serviço externo para hospedar imagens, entre em contato com o suporte do serviço em questão.
- Faça uma pull request ao Camo a fim de adicionar seu tipo de conteúdo à lista.
Uma imagem que foi alterada recentemente não está atualizando
Se você alterou uma imagem recentemente e ela está sendo exibida no navegador, mas não no GitHub, tente redefinir o cache da imagem.
-
Abra TerminalTerminalGit Bash.
-
Solicite os cabeçalhos de imagem usando
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)
Verifique o valor de Cache-Control
. Neste exemplo, não há nenhum Cache-Control
. Nesse caso:
- Se você é o proprietário do servidor que está hospedando a imagem, modifique-a para que ela retorne um
Cache-Control
igual ano-cache
para as imagens. - Se estiver usando um serviço externo para hospedar imagens, entre em contato com o suporte do serviço em questão.
Se Cache-Control
estiver definido como no-cache
, entre em contato com o conosco por meio do Portal de suporte do GitHub ou pesquise o Discussões da Comunidade do GitHub.
Remover uma imagem do cache do Camo
A limpeza do cache força os usuários do GitHub a solicitar novamente a imagem. Portanto, você deve usá-la bem moderadamente e somente no caso em que as etapas acima não funcionarem.
-
Abra TerminalTerminalGit Bash.
-
Limpe a imagem usando
curl -X PURGE
na URL do Camo.$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
Exibir imagens em redes privadas
Se uma imagem estiver sendo fornecida por uma rede privada ou um servidor que exige autenticação, ela não poderá ser exibida pelo GitHub. Na verdade, a imagem não pode ser exibida pelos usuários sem que eles façam login no servidor.
Para corrigir isso, mova a imagem para um serviço que esteja disponível publicamente.
Leitura adicional
- "Como criar um proxy para imagens do usuário" no the GitHub Blog