首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从TWebBrowser获取Cookie

从TWebBrowser获取Cookie
EN

Stack Overflow用户
提问于 2013-02-12 14:27:10
回答 2查看 4.6K关注 0票数 1

尝试使用indy下载文件(发布到asp保存excel响应),但遇到错误,使用wireshark请求缺少cookies。

试图从Twebbrowser窗口中抓取cookie并将其保存。

代码语言:javascript
复制
procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
var
document: IHTMLDocument2;
cookies:tstringlist;
begin
cookies:=tstringlist.Create;
document := WebBrowser1.Document as IHTMLDocument2;
cookies.Add(document.cookie);
//do stuff with them
end;

什么也不返回,那么从twebbrowser中提取cookie(或2)的最好方法是什么,还是我遗漏了一些更好的东西?

EN

回答 2

Stack Overflow用户

发布于 2013-02-12 18:47:58

TWebBrowser是Internet Explorer的包装器,而is本身也是WinInet的包装器。Indy不与IE/WinInet共享cookie,因此您必须手动将cookie详细信息复制到Indy的TIdCookieManager组件中。但是,IHTMLDocument2.cookie属性只是name=value对的分隔字符串(如果它返回任何内容,由于安全限制),它不包含足够的信息供Indy使用,例如Cookie源URL和目标域/路径,因此您必须从其他地方获取该信息,例如通过解析存储在Windows的Cookies文件夹中的IE cookie文件。

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 18:46:02

由于使用JavaScript和document.cookie属性的恶意软件(Ab)的历史记录,web服务器可能会在HTTP级请求仅通过HTTP返回cookie,而不是通过JavaScript。

https://www.owasp.org/index.php/HTTPOnly

我不确定在您的实例中是否存在这种情况,但是您提到您使用Indy来获取文件。如果您自己将其中的数据放入WebBrowser1中,那么不复制cookie数据是有意义的,因为它是HTTP事务的属性。请参阅有关cookies的Indy文档:

http://www.indyproject.org/docsite/html/TIdHTTP_CookieManager.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14826727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档