curlopt_cookie似乎没有用

This is my code:

$ch = curl_init('http://www1.macys.com/index.ognc');
curl_setopt($ch,CURLOPT_COOKIE,"shippingCountry=US; currency=USD");
curl_setopt ($ch, CURLOPT_COOKIEFILE, "C:/cookie-techenclave.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR, "C:/cookie-techenclave.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);     // Follow redirects
curl_setopt($ch, CURLOPT_MAXREDIRS, 8);             // Limit redirections to four
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);     // Return in string

$pageString = curl_exec($ch);
curl_close($ch) ;

The 2 cookies I am attempting to set are not getting set. I tested this with netcat. This is the output captured by netcat.

D:\php\L.c.MSQL.E.T.DVD\EF\SQL> "D:\My Downloads\apps
c111nt
c.exe" -l -p 80
GET /beauty/index_template.php HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; en) Presto/2.10.229 Version/11.64
Host: localhost
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-x
bitmap, */*;q=0.1
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

As can be seen there is no cookie header in there. What am I doing wrong? What else can i try? I tried capturing and setting all the headers , but again the cookies I am attempting to set didn't have any effect.

Thanks

展开翻译

译文

这是我的代码:</ p>

  $ ch = curl_init(  'http://www1.macys.com/index.ognc');
curl_setopt($ch,CURLOPT_COOKIE,"shippingCountry=US; currency = USD“);
curl_setopt($ ch,CURLOPT_COOKIEFILE,”C:/ cookie- techenclave.txt“);
curl_setopt($ ch,CURLOPT_COOKIEJAR,”C:/cookie-techenclave.txt“);
curl_setopt($ ch,CURLOPT_FOLLOWLOCATION,TRUE); //关注redirects
curl_setopt($ ch,CURLOPT_MAXREDIRS,8); //将重定向限制为四个
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,TRUE); //以字符串形式返回

$ pageString = curl_exec($ ch);
curl_close($ ch);
</ code> </ pre>

我试图设置的2个cookie 没有设定。 我用netcat测试了它。
这是netcat捕获的输出。</ p>

  D:\ php \ L.c.MSQL.E.T.DVD \ EF \ SQL&gt;  “D:\ My Downloads \ apps 
c111nt
c.exe”-l -p 80
GET /beauty/index_template.php HTTP / 1.1
User-Agent:Opera / 9.80(Windows NT 5.1; U; en)Presto / 2.10.229版本/ 11.64
主机:localhost
接受:text / html,application / xml; q = 0.9,application / xhtml + xml,image / png,image / webp,image / jpeg,image / gif,image / xx

bitmap,* / *; q = 0.1
Accept-Language:en-US,en; q = 0.9
Accept-Encoding:gzip,deflate
Connection:Keep-Alive
</ code> </ pre>

可以看出,那里没有cookie标题。 我究竟做错了什么? 我还能尝试什么?
我尝试捕获并设置所有标题,但我尝试设置的cookie再没有任何效果。</ p>

谢谢</ p>
</ DIV>

1个回答

Don't use CURLOPT_COOKIE if you want curl auto update cookie's value base on server response. because request cookie will hardcoded to the value of CURLOPT_COOKIE. CURLOPT_COOKIEFILE and CURLOPT_COOKIEJAR will be ignored on this case.

And are you sure the provided network sniff is from the above PHP code? I don't see the USER_AGENT get set on the code but it's available on your sniff.

展开翻译

译文



如果您希望curl自动更新cookie的值基于服务器响应,请不要使用CURLOPT_COOKIE。
因为请求cookie将硬编码为值 CURLOPT_COOKIE。 在这种情况下,CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR将被忽略。</ p>

您确定所提供的网络嗅探来自上述PHP代码吗? 我没有看到USER_AGENT在代码上设置,但它可以在你的嗅探器上使用。</ p>
</ div>

dongpai2468
dongpai2468 能帮助我或者用正确的答案更新你的问题吗?
大约 7 年之前 回复
doufan3408
doufan3408 有效! 我在cookie文件中手动设置了2个cookie。 然后设置curlopt_Cookiefile和curlopt_cookiejar,它终于奏效了。 谢谢
大约 8 年之前 回复
duanqing3026
duanqing3026 CURLOPT_COOKIEFILE&CURLOPT_COOKIEJAR是你的朋友。 要测试一些默认的cookie值,您应该谷歌搜索curl cookie文件格式。
大约 8 年之前 回复
du5407
du5407 但是如何在没有curlopt_cookie的情况下设置cookie。 是的,用户代理是浏览器。 我删除了CURLOPT_HTTPHEADER来测试。
大约 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐