画像をホストするために、GitHubはオープンソースプロジェクトの Camo を使用します。 Camo は、画像ごとに匿名の URL プロキシを生成し、ブラウザの詳細と関連情報を他のユーザから見えないようにします。 URL は https://<subdomain>.githubusercontent.com/
で始まり、画像のアップロード方法に応じて異なるサブドメインがあります。
匿名化した画像URLを受け取った人は、直接であれ間接であれ、その画像を見ることができます。 機密の画像をプライベートにしておきたい場合は、Camoを使う代わりにそれらを認証が必要なプライベートなネットワークあるいはサーバーから提供するようにしてください。
Camoでの問題のトラブルシューティング
まれな状況下において、Camoによって処理された画像がGitHubに表示されないことがあります。 問題のありかを判断するために利用できる手順を以下に示します。
Windowsユーザは、Git Powershell(これはGitHub Desktopと共にインストールされます)を使うか、curl for Windowsをダウンロードする必要があります。
画像が表示されない
画像がブラウザでは表示されるもののGitHubでは表示されない場合、その画像をローカルで要求してみることができます。
- ターミナルターミナルGit Bashを開いてください。
curl
を使って画像ヘッダをリクエストしてください。$ curl -I https://www.my-server.com/images/some-image.png > HTTP/1.1 200 OK > 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/1.1 200 OK > 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 Support or GitHub Premium Support にお問い合わせいただくか、GitHub Communityフォーラム を検索してください。
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 ブログのユーザの画像のプロキシ処理