我们有一个内联网网站,我们按用户ID使用查询信息,这里是网站cookie的样本。
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
192.168.202.200 FALSE / FALSE 0 JSESSIONID SX2NVyVkj4YlY2Zv7857Mdyy5RpdfQWmLjYjqtnWTF4x9nRghxcr!1083570229
我使用web开发人员复制cookie(和一些web元素)从firefox到chrome。铬可以正常工作。 但是当我使用这样的PHP代码时:
<?php
$cookie = tempnam('.','cookie');
$url='http://192.168.202.200/bbs/query.jsp';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
$output = curl_exec($ch) ;
$fh = fopen("cookie.html", 'w') ;
fwrite($fh, $output) ;
fclose($fh) ;
curl_close($ch);
preg_match("/<input type=\"hidden\" name=\"myname\" value=\"(.*)\"\/>/isU",$output,$myname);
$url='http://192.168.202.200/bbs/SomeAction.do';
$curlPost='billNum=1049090347503&myname='.$myname[1];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
$output = curl_exec($ch) ;
$fh = fopen("out.html", 'w') ;
fwrite($fh, $output) ;
fclose($fh) ;
curl_close($ch);
@unlink($cookie);
?>
我的php代码无法成功查询,但只有一个网页显示“查询检查机制错误”,这似乎是由web自动防止查询生成的。
'http://192.168.202.200/bbs/query.jsp'
是主页的iframe,'http://192.168.202.200/bbs/SomeAction.do'
有一个iframe来执行查询。
我将CURLOPT_HEADER更改为1,然后像这样获取标题:
HTTP/1.1 200 OK Cache-Control: no-cache="set-cookie" Date: Fri, 11 Oct 2013 15:10:21 GMT Transfer-Encoding: chunked Content-Type: text/html; charset=GB2312 Set-Cookie: JSESSIONID=SYJd5J2b2C7FN2LPXVQfHk3vp4mmpTlKBtBbLbCT1HGfmX2kXGtR!-860145551; path=/ X-Powered-By: Servlet/2.4 JSP/2.0
显然问题出在这里。 Cache-Control:no-cache="set-cookie"
,如何避免将回复标题提交到set-cookie
。
感谢。