1

indy を使用してファイルをダウンロードしようとしています (asp に投稿して Excel の応答を保存します) が、wireshark を使用してエラーが発生し、要求に Cookie がありません。

Twebbrowser ウィンドウから Cookie を取得して保存しようとしています。

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 つ) を抽出する最良の方法は何ですか?

4

2 に答える 2

3

TWebBrowserInternet Explorer のラッパーであり、それ自体が WinInet のラッパーです。Indy は IE/WinInet と Cookie を共有しないため、Cookie の詳細を手動で Indy のTIdCookieManagerコンポーネントにコピーする必要があります。ただし、IHTMLDocument2.cookieプロパティはname=valueペアの区切られた文字列に過ぎず (セキュリティの制限により、何かを返す場合)、Cookie のソース URL やターゲット ドメイン/パスなど、Indy が使用するのに十分な情報が含まれていないため、 Windows のCookiesフォルダに保存されている IE の Cookie ファイルを解析するなどして、別の場所からその情報を取得します。

于 2013-02-12T10:47:57.730 に答える
1

JavaScript と document.cookie プロパティを使用するマルウェア (ab) の履歴があるため、Web サーバーは HTTP レベルで、Cookie が HTTP 経由でのみ返され、JavaScript 経由では使用できないように要求する場合があります。

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

これがあなたのインスタンスに当てはまるかどうかはわかりませんが、Indy を使用してファイルをフェッチすると述べています。そのデータを自分で WebBrowser1 に入れる場合、Cookie データは HTTP トランザクションのプロパティであるため、一緒にコピーされないのは理にかなっています。Cookie に関する Indy のドキュメントを参照してください。

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

于 2013-02-12T10:46:02.353 に答える