最近碰到好多奇怪的BUG,今天就是一个例子。
我在用CURL调用麦考林的接口,在浏览器测试完全没问题,调用全都成功。但是用命令行执行PHP时,却一直不行,返回http code 302错误。百思不得其解,后来经理帮忙才找到问题所在。
curl初始化时有这样一行代码:
curl_setopt($ch, CURLOPT_USERAGENT, isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0');
用命令行调用时,跟浏览器测试时的环境是不一样的,这里的 isset($_SERVER['HTTP_USER_AGENT']) 就会是false。有些接口可能时为了某些原因,可能是安全,而阻止你的请求。
以后切记!