1

リモート サーバー上の画像ファイルの存在を既にチェックするコードがいくつかあります。これは、CURL または Fsockopen を使用すれば些細なことですが、問題があります。

たとえば、次の URL を考えてみましょう: http://media-cache-ec3.pinterest.com/upload/202450945720262211_0utXb0QZ_f.jpg

これに関する HTTP ヘッダーは次のとおりです。

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=31536000
Content-Type: image/jpeg
Date: Mon, 17 Sep 2012 08:10:59 GMT
ETag: "31d93cdf91def38bcdbd70786805ba2a"
Expires: Tue, 17 Sep 2013 08:10:59 GMT
Last-Modified: Mon, 17 Sep 2012 05:27:21 GMT
Server: ECS (dfw/56F1)
x-amz-id-2: Lr9D66o3dW5NN15dXhh04MSKIrwqugtFH51g8XoloI+7tItd2ITxJp3KDhVpKWm5
x-amz-request-id: 4F9888DFA41E82C6
X-Cache: HIT
Content-Length: 168738

それでも、実際のページはこれを返します:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>3AB3633B5D289688</RequestId>
<HostId>
/FOF1nsbJ6slumpg2YHnhV5L+j12z3U/fp5coyi/BGG8JRT3nAtPrCHcIV3p3B0Z
</HostId>
</Error>

URL のコンテンツを取得するだけで十分だと思っていましたが、CURL を使用しても、fsockopen を使用しても、file_get_contents() を使用しても、実際のコンテンツはバイナリのゴミです。それでも、ブラウザでその URL を指定すると、Amazon の S3 からの XML が表示されます。これは、Pinterest が使用していると思われるものです。

では、質問: 応答の本文 (現在はバイナリ ジャンクとして出力されます) から「AccessDenied」メッセージがあるかどうかを確認する方法についてのヒントはありますか?

ここに私が使用しているコードがあります: http://chopapp.com/#1hcycm6x

ありがとう!

4

0 に答える 0