2013-04-26 35 views
0

我使用curl从网站检索内容,但curl检索到的http代码是200,内容是空的。当我在firefox上使用这个时,我看到了302重定向。我已经就将此这一行:curl没有得到302但是200

curl_setopt($http, CURLOPT_FOLLOWLOCATION, true); 

当我使用的命令行,我得到了相同的结果:

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

在Firefox中,最后的位置将是http://fr.caudalie.com/但卷曲从未得到这一点。 你有想法吗?

+0

我该地址获得了401。 – 2013-04-26 07:16:44

+0

显示您的完整卷曲php代码 – shapeshifter 2013-04-26 07:18:23

+0

也可能不是标题重定向? http://curl.haxx.se/docs/faq.html#Redirects_work_in_browser_but_no – shapeshifter 2013-04-26 07:20:21

回答

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

谢谢,但它不起作用。任何其他想法? – 2013-04-26 12:18:14

+0

我希望你没有复制/粘贴我的PHP代码,因为它有错误。 – 2013-04-26 13:10:01

+0

我只采取了最后一行,我已经正确的http与我的变量。 – 2013-04-26 13:37:32