"在HTTP响应头部Set-cookie字段返回cookie,在会话期间,所有HTTP请求头部应携带该cookie(具体参见HTTP协议标准)。"请问这句话应该如何理解?请求后我输出HEADER看到set-cookie里面有很多内容请问 如何 正确的 携带 COOKIE 
   //cookie保存目录  
$cookie_file = dirname(__FILE__).'/cookie.txt';
    
 //模拟请求数据  
function request($url,$postfields,$cookie_jar,$referer){  
$ch = curl_init();  
$options = array(CURLOPT_URL => $url,  
  CURLOPT_SSL_VERIFYHOST=>1,
CURLOPT_SSL_VERIFYPEER=>false,
  CURLOPT_HEADER => 0,  
  CURLOPT_NOBODY => 0,  
  CURLOPT_PORT => 80,  
  CURLOPT_POST => 1,  
  CURLOPT_POSTFIELDS => $postfields,  
  CURLOPT_RETURNTRANSFER => 1,  
  CURLOPT_FOLLOWLOCATION => 1,  
  CURLOPT_COOKIEJAR => $cookie_file,  
  CURLOPT_COOKIEFILE => $cookie_file,  
  CURLOPT_REFERER => $referer  
);  
curl_setopt_array($ch, $options);  
ob_start(); //开启浏览器缓存
$code = curl_exec($ch);  
curl_close($ch);  
ob_end_clean();
return $code;  
}  

解决方案 »

  1.   

    function request($url,$postfields,$cookie_jar,$referer){  
    // ...
      CURLOPT_COOKIEJAR => $cookie_jar,  // not $cookie_file
      CURLOPT_COOKIEFILE => $cookie_jar,
    }
      

  2.   


      CURLOPT_COOKIEJAR => $cookie_file,  
      CURLOPT_COOKIEFILE => $cookie_file,  $cookie_file = dirname(__FILE__).'/cookie.txt';
    有什么区别吗?不都是变量吗?
    还有,我问的问题是 
    "在HTTP响应头部Set-cookie字段返回cookie,在会话期间,所有HTTP请求头部应携带该cookie(具体参见HTTP协议标准)。"这句如何理解?
      

  3.   

    如果在curl中启用了cookie,那么在今后的每次请求中,都会发送Cookie字段,在今后的每次响应中,都会遵照指示设置cookie值。
      

  4.   

    最近这两天刚根据一些要求识别验证码用 curl 通过https 登录 获取资料... CURLOPT_COOKIEJAR => $cookie_file,  //这个是将cookie 保存起来 
      CURLOPT_COOKIEFILE => $cookie_file,   //这个是将cookie 带上 一起发送..so 自己看着办
      

  5.   

    谢谢楼上两位回答在请求的时候会先获取 URL 中的 HEADER的SET-COOKIE中的内容
    然后保存 CURLOPT_COOKIEJAR => $cookie_file, 
    然后再POST  CURLOPT_COOKIEFILE => $cookie_file, 携带 COOKIE吗?
    这里的保存的COOKIE 是来自哪里的?是POST之后保存的吗?
      

  6.   

    是的,你不是也 输出HEADER看到set-cookie 了吗?