更新:EFFのHTTPS Everywhereプラグイン/拡張機能が一部のTumblr URLを処理した方法に起因する、画像が読み込まれないというコアの問題のようです。開発者に通知され、修正が行われているようです。この回答は基本的に、最初の質問で概説されているように、問題を明らかにするために行われた検出作業を分解し、同様の問題が将来発生した場合のさらなるデバッグ/診断に役立つ可能性があります。
編集:画像のリーチングに関するより大きなコンテンツは無効のようです。そのため、誰かに役立つ場合に備えて、新しいアイデアを上部に追加し、画像のリーチング情報を下部に残します。
Amazon CloudFront CDNのアイデア
さて、あなたが提供したURLと、Amazon CloudFront CDNセットアップでの実際の経験の一部を使用して、私は何かを発見したと思います。TumblrのAmazon CloudFront CDN構成が何らかの理由で窒息しているようです。これが私がそうだと思う理由です。
次のURLの例を見てみましょう。
http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
次に、実行curl -I
してそのファイルのヘッダー情報を取得します。
curl -I http://36.media.tumblr.com/d685b02fdf2d3f167c22d9a97e27e87a/tumblr_nfpq5qPZ4v1tognpro1_1280.png
そのための出力は次のようになります。
HTTP/1.1 200 OK
Content-Type: image/png
Content-Length: 782141
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=1209600
Date: Thu, 05 Mar 2015 02:15:44 GMT
Server: nginx
X-Cache: Miss from cloudfront
Via: 1.1 7e54fc06cd70e4752fe050bbe5c130be.cloudfront.net (CloudFront)
X-Amz-Cf-Id: QyIUyzfaJJN3PU_xWkW0P-D2kjg_1cVenKzFAoY2PubgZQlBHWorZQ==
ここで注意すべき点は、Date
(CloudFrontエンドポイント上のファイルの日付と時刻)およびX-Cache
(Amazonコンテンツ配信ステータス)ヘッダーです。Amazon CloudFrontの典型的な動作は、最初のアクセスが「クラウドフロントからのミス」を伝え、curl -I
その後すぐに別のアクセスを行うとがあるはずHit from cloudfront
です。
しかし、それは今私が見たものではありません。以下は、私が行った一連のアクセスの内訳Date
とX-Cache
ステータスです。
Date: Thu, 05 Mar 2015 02:19:37 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:39 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:44 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Miss from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
Date: Thu, 05 Mar 2015 02:19:50 GMT
= X-Cache: Hit from cloudfront
同じ正確なデータがHit from cloudfront
最後に近い複数のアイテムがある理由は、それがCDNで発生するためです。CDNのエンドポイントにファイルがある場合Date
、実際のファイルの作成/変更日と相関します。エンドポイントが持っています。
最初の4つのアクセスが数秒間隔であり、日付/時刻が異なり、それらすべてがであることに気付きましたMiss from cloudfront
か?つまり、CDNエンドポイントは、その時点でそのファイルにアクセスする試みがあり、すべての試みが失敗したことをエコーバックしているだけです。
つまり、私のアームチェアの評価では、TumblrのシステムがAmazon CloudFront CDNに対応していないか、Amazon CloudFront CDNがTumblrに対応していないということです。しかし、いくつかの点で、サーバー側では問題があります。また、これはCDNであるため、ある場所のファイルにアクセスしている人は問題に気付かないかもしれませんが、別の場所にいる他の人は画像の表示に問題があります。
つまり、クライアント側で簡単に解決できるとは思いません。
編集:したがって、元の投稿者はいくつかの新しいURLを追加しましたが、これは依然としてサーバー側の問題を示していますが、私はレコードの詳細を投稿したかっただけです。
EdgeCast&Highwinds CDNのアイデア
そのため、元のポスターに詳細が追加されたため、例として使用されているブログ投稿に基づいた詳細を次に示します。
http://claystorks.tumblr.com/post/112741831192/soulmister-claystorks-windspeare-explain
これらの画像のURLは、その投稿のURLの例として提供されています。
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
https://gs1.wac.edgecastcdn.net/8019B6/data.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
そして、これら2つの画像URLは実際に失敗します。しかし、私の側から(アメリカ、ニューヨークのブルックリンからのブログ投稿の元のソースコードを見て)、これらのEdgeCast(gs1.wac.edgecastcdn.net
)URLが表示されません。むしろ、これらは私が見ているURLです:
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_500.png
http://41.media.tumblr.com/76493f424ebb3b62d6de43e53643180a/tumblr_nkps82DdCh1sjn35qo1_1280.png
だから私の最初の考えは、なぜオリジナルのポスターがそれらのEdgeCast(gs1.wac.edgecastcdn.net
)を見ているのかということです。しかし、次にtracerouteを実行すると、41.media.tumblr.com
それがHighwinds(!?!?)によって管理されているサーバーであることがわかります。対照的に、元のユーザーによって渡された初期URLは36.media.tumblr.com
ホスト名を使用しており、Amazon CloudFront CDNサーバーによって管理されていることがわかります。
これは言いたいことです-前に言ったように-これはすべて、TumblrとそのCDN管理のサーバー側の問題のようです。しかし、私の側から(米国ニューヨーク州ブルックリン)、Highwinds CDNサーバーとAmazon CloudFront CDNサーバーからコンテンツが期待どおりに配信されているのがはっきりとわかります。これらのEdgeCast URLがどこから来ているのか、またどのようにして/なぜ失敗するのかは、クライアント側では制御できません。これは間違いなくTumblrの技術スタッフに連絡するためのものです。デスクトップのエンドユーザーがこれを解決する方法はないからです。
画像リーチングのアイデア
もう関連がないかもしれませんが、参照用にここにあります。
これを言ってあなたは私に手がかりを与えます:
wget
画像の直接リンクでの使用は機能します。
多くのサイトでは、画像のリーチングを防ぐための規則(通常はApacheを介して設定)が定められています。これらのルールがどのように機能するかについての詳細はここに提供されており、これは次のように要約されます。
.htaccessを使用すると、サーバーでのホットリンクを禁止できるため、たとえば、サイトの画像やCSSファイルにリンクしようとするユーザーがブロックされる(画像が壊れるなど、要求が失敗する)か、別のコンテンツ(すなわち:怒っている人のイメージ)。
説明に基づいて(そして画像にアクセスできるという事実から)、wget
問題が発生している画像はユーザーによってTumblrでホストされているのではなく、Tumblrブログに配置されているが実際には別のホストでホストされている画像であると信じられます地点。
標準の画像リーチング手順が導入されている場合、リーチングをブロックする、別のサイトでホストされている1つのサイトで埋め込み画像を表示すると、画像リンクが壊れるか、「リーチングを停止します!」返される画像。これは、そのページの例のような基本的なリーチング防止ルールが画像リファラーをクロスチェックして、画像をリクエストしているページが画像をホストしているドメインと一致することを確認するためです。
したがってwget
、画像に直接アクセスするのは、画像に直接アクセスする場合です。したがって、画像リーチングルールは適用されません。したがってwget
、別のページに埋め込まれている場合は、画像を取得できますが、取得することはできません。