2013-11-21 109 views
3

我的代码给我HTTP状态代码302,当我访问谷歌,但我与Firefox浏览器访问并检查与萤火虫的状态,有状态为200得到正确的HTTP状态代码的PHP

这里是我的代码:

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

我也试过get_headers,但它给了我301个状态

get_headers($url); 

编辑:结果低于

array (size=26) 
    'url' => string 'https://www.google.com.cy/?gws_rd=cr&ei=SIeOUo7bGuKH0AWO14CYDQ' (length=62) 
    'content_type' => string 'text/html; charset=UTF-8' (length=24) 
    'http_code' => int 302 
    'header_size' => int 1673 
    'request_size' => int 317 
    'filetime' => int -1 
    'ssl_verify_result' => int 0 
    'redirect_count' => int 2 
    'total_time' => float 0.561 
    'namelookup_time' => float 0 
    'connect_time' => float 0.078 
    'pretransfer_time' => float 0 
    'size_upload' => float 0 
    'size_download' => float 0 
    'speed_download' => float 0 
    'speed_upload' => float 0 
    'download_content_length' => float 0 
    'upload_content_length' => float 0 
    'starttransfer_time' => float 0 
    'redirect_time' => float 0.405 
    'certinfo' => 
    array (size=0) 
     empty 
    'primary_ip' => string '173.194.112.247' (length=15) 
    'primary_port' => int 443 
    'local_ip' => string '192.168.2.3' (length=11) 
    'local_port' => int 55015 
    'redirect_url' => string '' (length=0) 
+1

这些标题是否与您的cURL请求或您的页面输出有关? – Scuzzy

+0

@Scuzzy我不明白你的问题..我向http.com发出http请求,它给了我这个http状态码。 – biox

回答

1

啊!谷歌正在通过GEO-IP或类似软件定位你,并将你重定向到你的本地谷歌镜像。

请参见:https://webapps.stackexchange.com/questions/46591/what-does-gws-rd-cr-in-the-url-indicate

所以他们要重定向你的302代码是正确的。

尝试使用网址:https://www.google.com/ncr (ncr代表无国家重定向),并看看你如何去。

+0

即使没有国家重定向我得到相同的状态代码..但我用一个在线的PHP编译器和我的代码返回200状态代码。所以问题是我的国家:)谢谢你的努力..我会考虑成功的302状态。 – biox

3

您使用Google的哪个网址?

我用你的代码上面,设置:

$url = 'http://www.google.com'; 

并获得在卷曲信息200响应。

的完整代码我正在与测试:

奇怪 - 我使用:

$url = 'http://www.google.com'; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

var_dump($info); 

的的var_dump输出I接收返回:

阵列(26){[“URL “] => string(61)”https://www.google.co.uk/?gws_rd=cr&ei=fIaOUsflOqnG0QXy74DYDg“[”content_type“] => string(24)”text/html; charset = UTF-8“[”http_code“] => int(200) [”header_size“ ] => int(2462)[“request_size”] => int(493)[“filetime”] => int(-1)[“ssl_verify_result”] => int(0)[“redirect_co (float)(0.011754)[“pretransfer_time”] =“float”(0.226363)[“namelookup_time”] => float(7.1E-5)[“connect_time”] => float =>浮点型(0.082954)[“size_upload”] =>浮点型(0)[“size_download”] =>浮点型(119772)[“speed_download”] =>浮点型(418252)[“speed_upload”] = [“download_content_length”] => float(262)[“upload_content_length”] => float(0)[“starttransfer_time”] => float(0.156201)[“redirect_time”] => float(0.076769)[“certinfo”] = > array(0){} [“primary_ip”] => string(14)“173.194.34.183”[“primary_port”] => int(443)[“local_ip”] => string(12)“192.168.0.15” [“local_port”] => int(54606)[“redirect_url”] => string(0)“”}

+0

我使用相同的网址 – biox

+0

我添加了我的结果 – biox

+0

请参阅下面的修订答案(根据您的结果)。 – steve