搜索
查看: 3982|回复: 6

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

[复制链接]

1

主题

3

帖子

28

积分

新手入门

Rank: 1

积分
28
发表于 2014-7-30 19:53:02 | 显示全部楼层 |阅读模式
::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
回复

使用道具 举报

4

主题

877

帖子

4724

积分

荣誉会员

Rank: 8Rank: 8

积分
4724
发表于 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 )
复制代码


回复

使用道具 举报

4

主题

877

帖子

4724

积分

荣誉会员

Rank: 8Rank: 8

积分
4724
发表于 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 赞一个!

查看全部评分

回复

使用道具 举报

1

主题

3

帖子

28

积分

新手入门

Rank: 1

积分
28
 楼主| 发表于 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。。
回复

使用道具 举报

0

主题

31

帖子

336

积分

培训班

积分
336
QQ
发表于 2014-8-21 23:02:52 | 显示全部楼层

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

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

使用道具 举报

0

主题

8

帖子

102

积分

一级会员

Rank: 2

积分
102
发表于 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的还是获取不到
回复

使用道具 举报

4

主题

877

帖子

4724

积分

荣誉会员

Rank: 8Rank: 8

积分
4724
发表于 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-11-25 13:23 , Processed in 0.093750 second(s), 23 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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