搜索
aardio官方社区 门户 查看主题

读取 httponly cookie,参数改怎么写?

发布者: hgchun1 | 发布时间: 2014-7-30 19:53| 查看数: 3768| 评论数: 6|帖子模式

::Wininet := ..raw.loadDll("Wininet.dll")
InternetGetCookie :=  Wininet.api("InternetGetCookieA","bool(string url,str name,str &data,INT & size)")
这段代码是热心网友回答别人的提问贴出来的。

如果是 Wininet.api("InternetGetCookieEx","bool(string url,str name,str &data,INT & size,?,?)")

InternetGetCookieEx 后面两个参数,这里要怎么写呢?


C++定义是下代码
InternetGetCookieExA(
    __in LPCSTR lpszUrl,
    __in_opt LPCSTR lpszCookieName,
    __in_ecount_opt(*lpdwSize) LPSTR lpszCookieData,
    __inout LPDWORD lpdwSize,
    __in DWORD dwFlags,
    __reserved LPVOID lpReserved
    );
BOOLAPI
InternetGetCookieExW(
    __in LPCWSTR lpszUrl,
    __in_opt LPCWSTR lpszCookieName,
    __in_ecount_opt(*lpdwSize) LPWSTR lpszCookieData,
    __inout LPDWORD lpdwSize,
    __in DWORD dwFlags,
    __reserved LPVOID lpReserved
    );
#ifdef UNICODE
#define InternetGetCookieEx  InternetGetCookieExW
#else
#define InternetGetCookieEx  InternetGetCookieExA
#endif // !UNICODE

最新评论

不争 发表于 2014-7-31 10:36:45

这个函数其实在aardio里没有什么用,httponly只是对付js的,例如用inet.whttp直接读"Set-Cookie"头就可以取到httponly的

这个函数其实在aardio里没有什么用,httponly只是对付js的,例如用inet.whttp直接读"Set-Cookie"头就可以取到httponly的cookie。

API声明不会写,你可以不写,静态类型就那么几个,可以直接写:
  1. ::Wininet := ..raw.loadDll("Wininet.dll")

  2. var ret,szCookie = ::Wininet.InternetGetCookieEx("http://www.baidu.com",null,{ BYTE data[1024]},{INT lpdwSize = 1024},0x00002000/*_INTERNET_COOKIE_HTTPONLY*/,null)

  3. import console
  4. console.log("",ret,szCookie.data )
复制代码


不争 发表于 2014-7-31 10:37:42

再说一下这个API要怎么声明,其实很简单,在手册里都有就那么几个类型,用aardio自带的API转换工具转换也可以,下面说一下要点: __in DWORD

再说一下这个API要怎么声明,其实很简单,在手册里都有就那么几个类型,用aardio自带的API转换工具转换也可以,下面说一下要点:

__in DWORD dwFlags
这前面的 __in 表示是他是输入参数其实没有实际意义类似注释你可以无视,后面的DWORD查一下手册或者用aardio里的工具转换一下你能看到是一个32位无符号整数,在aardio里32位整数是int,无符号32整数则是大写INT.

__reserved LPVOID lpReserved
这里的__reserved是自声明他是一个保留的参数(可以理解为无意义参数),也是一个宏这里没有意义。
LPVOID是void *的别名,实际上就是普通指针,在aardio里则是pointer类型。

所以你的声明应当下面这样写:
  1. ::Wininet := ..raw.loadDll("Wininet.dll")
  2. InternetGetCookieEx :=  Wininet.api("InternetGetCookieEx","bool(string url,str name,str &data,INT & size,INT dwFlags,pointer lpReserved )")

  3. var ret,cookie = InternetGetCookieEx("http://www.baidu.com",null,1024,1024,0x00002000/*_INTERNET_COOKIE_HTTPONLY*/)

  4. import console
  5. console.log("",ret,cookie )
复制代码

评分

参与人数 1银币 +5 收起 理由
hgchun1 + 5 赞一个!

查看全部评分

hgchun1 发表于 2014-7-31 11:37:18

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=66972&ptid=12287][c

不争 发表于 2014-7-31 10:37
再说一下这个API要怎么声明,其实很简单,在手册里都有就那么几个类型,用aardio自带的API转换工具转换也可以 ...

非常感谢,问题解决了,以后我多多学习一下aau。。
zjutsxj 发表于 2014-8-21 23:02:52

找了好久才找到的。好像在论坛里搜索不到。

找了好久才找到的。好像在论坛里搜索不到。
saturn88 发表于 2017-4-26 17:54:06
不争 发表于 2014-7-31 10:36
这个函数其实在aardio里没有什么用,httponly只是对付js的,例如用inet.whttp直接读"Set-Cookie"头就可以 ...

var cookie = whttp.readHeader("Set-Cookie:");  httponly的还是获取不到
不争 发表于 2017-4-26 19:08:46
saturn88 发表于 2017-4-26 17:54
var cookie = whttp.readHeader("Set-Cookie:");  httponly的还是获取不到

httpOnly.jpg

看清楚了!
至于你为什么取不到........等我有空再跟你慢慢讲。

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-25 19:21 , Processed in 0.125000 second(s), 22 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表