dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:1431回复:0

php curl 遇到 301 问题及解决方法

楼主#
更多 发布于:2017-04-07 13:53
问题描述
php curl函数,遇到服务器返回 301错误,导致返回错误的数据;

php /root/sh/php/tongji.php
string(185) "<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.10.0</center>
</body>
</html>
"
环境
参考:[php] 使用curl 获取百度统计数据

解决方法
更改代码,设置 curl_setopt函数, value 参数 ,添加 option 以下选项:
       // 301 重定向
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);
        // 1:301,2:302,4:303
        curl_setopt($ch, CURLOPT_POSTREDIR,1);
        // 重定向最大次数
        curl_setopt($ch, CURLOPT_MAXREDIRS,3);

验证
php /root/sh/php/tongji.php
string(649) "{"status":0,"msg":"",....省略 }"

扩展: curl_setopt 函数参数
CURLOPT_FOLLOWLOCATION
设置 TRUE 时将会根据服务器返回 HTTP 头中的 "Location: " 重定向。(注意:这是递归的,"Location: " 发送几次就重定向几次,除非设置了 CURLOPT_MAXREDIRS,限制最大重定向次数。)。

CURLOPT_MAXREDIRS    
指定最多的 HTTP 重定向次数,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的。

CURLOPT_POSTREDIR    
位掩码1 (301 永久重定向), 2 (302 Found) 和 4 (303 See Other) 设置 CURLOPT_FOLLOWLOCATION 时,什么情况下需要再次 HTTP POST 到重定向网址。     cURL 7.19.1 中添加,PHP 5.3.2 开始可用。

参考
:PHP的curl之CURLOPT_POSTREDIR
#
游客

返回顶部