inet.http访问添加cookie的几点实测

小肥羊 15天前 157

这两天发现群里又有人遇到inet.http在进行addHeaders时添加cookie不生效的问题,其实这个之前已经遇到过,并做了些分析

代码如下:(用http 和 whttp 做了比较)

首先php服务端代码:

 <?php
session_start();
echo "_COOKIE => ";
print_r($_COOKIE);

?>

下面是aardio代码:

import console; 
import inet;
import inet.http;
http = inet.http();
import inet.whttp;
whttp = inet.whttp();


url = "http://127.0.0.1:8903/c.php"

http.addHeaders = {cookie="aaa=asdfasdf"}

res = http.get(url); // 第一次访问用于触发session的存储,方便看到过程
..console.dump("第一次 http-get",res)
res = http.get(url);
..console.dump("第二次 http-get",res)


whttp.addHeaders = {cookie="aaa=asdfasdf"}
res = whttp.get(url);
..console.dump("第一次 whttp-get",res)// 第一次访问用于触发session的存储,方便看到过程
res = whttp.get(url);
..console.dump("第二次 whttp-get",res)


inet.setCookie("http://127.0.0.1:8903","kkkkk","vvvvv123123vvvv");
res = http.get(url);
..console.dump("第一次 inet.setCookie后 http-get",res)



console.pause(true);

看下返回结果:

对上面结果分析,可以看到所有的session添加的cookie都是可以在第二次正常访问。

但是在http的第一次访问,addHeaders添加的cookie无效,但是whttp的是有效的。

因为inet.http和web.form等共享cookie,其实需要通过inet.setCookie来设置cookie,通过这里进行设置后,访问就会生效。


这也是http和whttp的区别吧,如果实在不想折腾,仅仅用来做模拟访问,直接用whttp好了。


如果想用起来更适合自己,建议自行在http和whttp的基础上封装一个自己的http库,按自己常用的功能和习惯整理一下。


当然也可以尝试一些其他的第三方http访问库,这个也很不错。

最新回复 (1)
  • cgfriend 13天前
    0 2
    感谢大佬
返回