Pour héberger vos images, GitHub utilise le projet open source Camo. Camo génère un proxy d’URL anonyme pour chaque fichier, qui masque les détails de votre navigateur et les informations associées auprès des autres utilisateurs. L’URL commence par https://<subdomain>.githubusercontent.com/
, avec différents sous-domaines en fonction de la façon dont vous avez chargé l’image.
Les vidéos reçoivent également des URL anonymes avec le même format que les URL d’image, mais ne sont pas traitées via Camo. Cela est dû au fait que GitHub ne prend pas en charge les vidéos hébergées en externe, de sorte que l’URL anonyme est un lien vers la vidéo chargée hébergée par GitHub.
Toute personne qui reçoit votre URL anonyme, directement ou indirectement, peut afficher votre image ou votre vidéo. Pour garder les fichiers de médias sensibles privés, limitez-les à un réseau privé ou à un serveur qui nécessite une authentification au lieu d’utiliser Camo.
Résolution des problèmes liés à Camo
Dans de rares circonstances, les images traitées via Camo peuvent ne pas apparaître sur GitHub. Voici quelques étapes à suivre pour déterminer où se trouve le problème.
Les utilisateurs Windows devront utiliser Git PowerShell (qui est installé avec GitHub Desktop) ou télécharger curl pour Windows.
Une image n’apparaît pas
Si une image s’affiche dans votre navigateur, mais pas sur GitHub, vous pouvez essayer de la demander localement.
-
Ouvrez TerminalTerminalGit Bash.
-
Demandez les en-têtes d’image en utilisant
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
-
Vérifiez la valeur
Content-Type
. Dans ce cas, il s’agit deimage/x-png
. -
Vérifiez le type de contenu par rapport à la liste des types pris en charge par Camo.
Si votre type de contenu n’est pas pris en charge par Camo, vous pouvez essayer plusieurs actions :
- Si vous possédez le serveur qui héberge l’image, modifiez-le afin qu’il retourne un type de contenu correct pour les images.
- Si vous utilisez un service externe pour héberger des images, contactez le support technique de ce service.
- Effectuez une demande de tirage sur Camo pour ajouter votre type de contenu à la liste.
Une image qui a changé récemment n’est pas mise à jour
Si vous avez modifié une image récemment et qu’elle s’affiche dans votre navigateur, mais pas GitHub, vous pouvez essayer de réinitialiser le cache de l’image.
-
Ouvrez TerminalTerminalGit Bash.
-
Demandez les en-têtes d’image en utilisant
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)
Vérifiez la valeur Cache-Control
. Dans cet exemple, il n’y a pas de Cache-Control
. Dans ce cas :
- Si vous possédez le serveur qui héberge l’image, modifiez-le afin qu’il retourne un
Cache-Control
deno-cache
pour les images. - Si vous utilisez un service externe pour héberger des images, contactez le support technique de ce service.
Si Cache-Control
est défini sur no-cache
, contactez nous via le portail de support GitHub ou visitez le Discussions de la communauté GitHub.
Suppression d’une image du cache de Camo
La purge du cache force chaque utilisateur de GitHub à re-demander l’image. Vous devez donc l’utiliser de manière éparse et uniquement en cas de non-fonctionnement des étapes ci-dessus.
-
Ouvrez TerminalTerminalGit Bash.
-
Videz l’image avec
curl -X PURGE
sur l’URL Camo.$ curl -X PURGE https://camo.githubusercontent.com/4d04abe0044d94fefcf9af2133223.... > {"status": "ok", "id": "216-8675309-1008701"}
Affichage d’images sur des réseaux privés
Si une image est servie à partir d’un réseau privé ou d’un serveur qui nécessite une authentification, elle ne peut pas être consultée par GitHub. En fait, aucun utilisateur ne peut l’ouvrir sans demander de se connecter au serveur.
Pour résoudre ce problème, déplacez l’image vers un service disponible publiquement.
Pour aller plus loin
- « Mise en proxy d’images utilisateur » sur the GitHub Blog