2

cURL のラッパーを備えた WordPress の HTTP API を使用しています (PHP の cURL が行うすべてのことを実行できると仮定します)。

API 経由で次のヘッダーをチェックしようとすると、次If-None-Matchの値が返されます。If-Modified-Since

Status: 304 Not Modified

代わりに私はStatus: 200 OK

コマンド ラインから curl をテストすると正常に動作し、正しいステータスが返されます。これは次のように動作します。

curl -i https://api.github.com/users/wycks -H 'If-None-Match: "7efeb402e491989a4f37d8d82aae8946"'

PHP で同じ ETag を入力しても'If-None-Match' => '7efeb402e491989a4f37d8d82aae8946'機能しません。

APIへの私のPHPリクエストは次のとおりです。

array
  'method' => string 'HEAD' (length=4)
  'timeout' => int 5
  'redirection' => int 0
  'httpversion' => string '1.0' (length=3)
  'user-agent' => string 'WordPress/3.5; http://dev.local/Foo15' (length=37)
  'blocking' => boolean true
  'headers' => 
    array
      'Accept-Encoding' => string 'deflate;q=1.0, compress;q=0.5' (length=29)
  'cookies' => 
    array
      empty
  'body' => null
  'compress' => boolean false
  'decompress' => boolean true
  'sslverify' => boolean false
  'stream' => boolean false
  'filename' => null
  'If-None-Match' => string '7efeb402e491989a4f37d8d82aae8946' (length=32)
  'Cache-Control' => string 'must-revalidate' (length=15)
  '_redirection' => int 0
  'ssl' => boolean true
  'local' => boolean false
boolean true

そして間違った応答:

response' => 
    array
      'code' => int 200
      'message' => string 'OK' (length=2)
4

1 に答える 1

4

根本的な理由についてはわかりませんが、いくつかの突っ込みから、文字列内の etag 値を引用する必要があります:

'If-None-Match' => '"7efeb402e491989a4f37d8d82aae8946"'
于 2013-01-19T21:06:31.047 に答える