0

curlWeb サイトからコンテンツを取得するために使用していますが、curl によって取得された http コードは 200 で、コンテンツは空です。これを Firefox で使用すると、302 リダイレクトが表示されます。私はすでにこの行を追加しています:

curl_setopt($http, CURLOPT_FOLLOWLOCATION, true);

コマンドラインを使用すると、同じ結果が得られます。

curl -I -L http://www.caudalie.fr

Firefox では、最終的な場所は になりますhttp://fr.caudalie.com/が、curl はこれを取得しません。アイデアはありますか?

4

1 に答える 1

1

Firefox が送信したヘッダーから始めて、いくつかの異なる要求ヘッダーを試しました。最小値は機能しません:

bf@desktop-bf:~$ telnet www.caudalie.fr 80
Trying 178.16.174.50...
Connected to www.caudalie.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.caudalie.fr
Connection: keep-alive

HTTP/1.1 200 OK
Server: nginx
Date: Fri, 26 Apr 2013 07:23:36 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Vary: Accept-Encoding
Content-Length: 0

言語を指定するとリダイレクトされました:

bf@desktop-bf:~$ telnet www.caudalie.fr 80
Trying 178.16.174.50...
Connected to www.caudalie.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.caudalie.fr
Accept-Language: nl,en;q=0.7,en-us;q=0.3

HTTP/1.1 302 Found
Server: nginx
Date: Fri, 26 Apr 2013 07:23:55 GMT
Content-Type: text/html
Connection: keep-alive
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Location: http://fr.caudalie.com/
Vary: Accept-Encoding
Content-Length: 0

したがって、Accept-Languageヘッダーを追加すればOKです。PHP では、次のようになります。

curl_setopt($http,CURLOPT_HTTPHEADER,array('Accept-Language: nl,en;q=0.7;en-us;q=0.3'));

ここも参照してください: curl 呼び出しを介して HTTP 要求を使用してヘッダーを送信する方法?

于 2013-04-26T07:26:31.600 に答える