2013-04-26 2 views
0

Я использую curl для извлечения содержимого с веб-сайта, но http-код, полученный с помощью curl, составляет 200, а содержимое пуста. Когда я использовал это в firefox, я вижу перенаправление 302. Я уже addes этой строки:curl не получает 302, но 200

curl_setopt($http, CURLOPT_FOLLOWLOCATION, true); 

Когда я использовал командную строку, я получаю тот же результат:

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

В Firefox, окончательное местоположение будет http://fr.caudalie.com/ но никогда локон не получаю это. У вас есть идея?

+0

Я получаю 401 по этому адресу. –

+0

показать ur полный curl php code – shapeshifter

+0

также это может быть не перенаправление заголовка? http://curl.haxx.se/docs/faq.html#Redirects_work_in_browser_but_no – shapeshifter

ответ

1

Я пробовал несколько разных заголовков запросов, начиная с заголовков, отправленных Firefox. Минимальное не работает:

[email protected]:~$ 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 

Я получил редирект, если я дам язык:

[email protected]:~$ 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 заголовок, и вы должны быть в порядке. В PHP, это было бы:

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

Смотрите также здесь: How to send a header using a HTTP request through a curl call?

+0

Спасибо, но это не сработает. Любые другие идеи? –

+0

Надеюсь, вы не скопировали и не ввели мой PHP-код, потому что в нем есть ошибка. –

+0

Я взял только последнюю строку, и у меня есть правильный http с моей переменной. –

Смежные вопросы