0

PHP 経由で cURL を使用して ASPX Web サイトにアクセスしています。私のブラウザでは、リクエストすると302 Found(実際には別のサイトにリダイレクトされます)、すぐにリダイレクトページへの別のリクエストが表示されます。

私の cURL では200 OK、私がアクセスしている次のページ (リダイレクトを模倣している) が を返し500、前のページで何かが間違っていた可能性があるため、皮肉なことに間違っています。

テストとして、ページをリダイレクトしている自分の Web サイトにアクセスしようとしました。私も取得し200 OKましたcurl_getinfo($curl);が、返されたページの内容は、ヘッダーがHTTP/1.1 302 Found もう1つの奇妙なことであることを具体的に示してcurl_getinfo($curl);いました。実際にリダイレクトしていることを実際に知っているときに自分のWebサイトにアクセスしても、常に200 OKを返します.

で 302 ではなく 200 OK を取得する理由はありcurl_getinfoますか?

ありがとう!

4

2 に答える 2

2

私の推測でCURLOPT_FOLLOWLOCATIONはオンです。

于 2012-04-20T11:19:56.827 に答える
2

CURLOPT_FOLLOWLOCATIONの回答に加えて、
CURLOPT_HEADERFUNCTION オプションを設定して、リダイレクトを確認することもできます。

curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
...
curl_exec($ch);
...
function read_header($curl, $header) {
  echo $header;
  return strlen($header);
}

CURLOPT_FOLLOWLOCATION を有効にすると、次のような出力が得られるはずです

HTTP/1.0 301 Moved Permanently
Date: Fri, 20 Apr 2012 11:26:37 GMT
Server: Apache
Location: http://www.spiegel.de/
Content-Length: 230
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from lnxp-3968.srv.mediaways.net
X-Cache-Lookup: MISS from lnxp-3968.srv.mediaways.net:91
Via: 1.0 lnxp-3968.srv.mediaways.net (squid/3.1.4)
Connection: close

HTTP/1.0 200 OK
Date: Fri, 20 Apr 2012 11:25:38 GMT
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.4; JBoss-4.0.3SP1 (build: CVSTag=JBoss_4_0_3_SP1 date=200510231054)/Tomcat-5.5
Cache-Control: max-age=120
Expires: Fri, 20 Apr 2012 11:27:38 GMT
X-Host: lnxp-2885
X-Robots-Tag: index, follow, noarchive
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 161305
Vary: Accept-Encoding
Age: 59
X-Cache: HIT from lnxp-3954.srv.mediaways.net
X-Cache-Lookup: HIT from lnxp-3954.srv.mediaways.net:90
Via: 1.1 www.spiegel.de, 1.0 lnxp-3954.srv.mediaways.net (squid/3.1.4)
Connection: close

この場合、http://spiegel.de へのリクエストが http://www.spiegel.de にリダイレクトされることを示してます

于 2012-04-20T11:30:54.567 に答える