PHP cURL
GET/POST
curl_setopt($ch, CURLOPT_POST, 0);
Curl 默认使用 GET 方式获取内容,如果设定成了 POST 而重新要使用 GET 请求,或者上一次请求为 POST,这次请求需要重新使用 GET 请求,需要复写设置:
curl_setopt($ch, CURLOPT_HTTPGET, 1);
cookie
// 必须使用绝对路径,不可以写成 $cookie_jar = 'test.cookie' $cookie_jar = dirname(__FILE__).DIRECTORY_SEPARATOR.'test.cookie'; // 写入文件 curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie_jar); // 从文件读出 curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie_jar);
CURL 已经可以操作 HttpOnly 的 cookie,在 cookie 文件中会以 # 开头记录 HttpOnly 方式的 cookie。
The #Httponly_ prefix on a line is not a comment. It is a magic string to tell the browser/client that the cookie in question is a httponly one. curl will understand that and deal with it accordingly.
curl_getinfo
获取一个cURL连接资源句柄的信息 参见 php.net
HTTP Header
响应信息头
curl_setopt($ch, CURLOPT_HEADER, 1);
这将在请求后的内容里输出
请求信息头
# 必须先在请求前指定 curl_setopt($ch, CURLINFO_HEADER_OUT, 1); $info = curl_getinfo($ch, CURLINFO_HEADER_OUT);
Debug
HTTP/1.1 500 Internal Server Error
如果出现 500 错误基本是因为 curl 的操纵与浏览器存在差异,出现错误或者受服务端代码控制异常响应,如没有成功执行 Cookie 或者本应是 GET 的页面提交了 POST。