WebBrowser控件中Headers参数的问题。(200分)

  • 主题发起人 主题发起人 Passion
  • 开始时间 开始时间
P

Passion

Unregistered / Unconfirmed
GUEST, unregistred user!
WebBrowser控件的BeforeNavigate2事件中:

type TWebBrowserBeforeNavigate2 = procedure(Sender: TObject; const pDisp:
IDispatch; var URL: OleVariant; var Flags: OleVariant; var
TargetFrameName: OleVariant; var PostData: OleVariant; var Headers:
OleVariant; var Cancel: WordBool) of object;

property OnBeforeNavigate2: TWebBrowserBeforeNavigate2;

里头的那个Var Headers应该怎样访问到?因为是OleVariant,所以就不知道怎样转换了
。照道理它应该是HTTp请求头的其他字符列表才是。但用String和WideString转换都得
到空的值。

后来又发现这个Headers就是String值,但设置的和发送的不一样。比如我想设置访问页
面的时候的Cookie,在Headers中写上Headers := 'Cookie: xxxxxxx;'结果用网络监听软件
所发送的内容还有好几行,但并无这一句Cookie的,而如果写Headers := 'XCookie: xxxxxxx;'
或者别的什么乱七八糟的,发送出去的便又有了。
现在的问题是,怎样访问或者改写WebBrowser所发送的全部HEADER?如果不能,怎样改写
所要发送的Cookie?Headers参数似乎用处不大。
 
我也在研究!
 
用 VarType(Headers) 查询到 Headers 的数据类型是 varOleStr。Length(Headers) 通常是 0,有时也会返回 Content-Type 串。从这个现象来看,微软并没有传回全部的 HTTP Headers。查了一下 IWebBrowser2 接口,好像没有其他类似的功能可以获得 HTTP 头的数据。

>> 在Headers中写上Headers := 'Cookie: xxxxxxx;'结果用网络监听软件所发送的内容还有好几行,但并无这一句Cookie的,而如果写Headers := 'XCookie: xxxxxxx;'发送出去的便又有了。

这表明微软由于某种原因禁止用户更改 Cookie 的值。

如果可以一定要使用 WebBrowser,可以在 BeforeNavigate2 中 Cancel,自己收发 HTTP 数据,更改 Cookie。

不使用 WebBrowser 更改 Cookie 的方法原来有很多讨论,以下是一例:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=102972


我对网络仅有肤浅的了解,说错了莫怪。
 
应该是这样,我死了这条在IE中改客户端Cookie心了。结帖。
 
多人接受答案了。
 
后退
顶部