![]() |
Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Guten Tag,
ich würde gern den HTTP-Header verändern oder wenigstens auslesen, wenn ich eine Seite im WebBrowser annavigiere. Ich benutze das total übersichtliche Ereignis OnBeforeNavigate2:
Delphi-Quellcode:
Anhand der Kommentare ist das Problem erkenntlich: ich scheine den ausgehenden Header nicht ändern zu können (Sniffer = Netzwerkanalysetool).
procedure TFormDATBrowser20.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin // Variante 1 // Headers := OleVariant(String(Headers) + 'Connection: Close'+#13#10); // ging nicht, d.h. im Sniffer hab ich gesehen, dass da 'Connection: keep-alive' stand // Variante 2 // Headers := OleVariant('Foo: bar'+#13#10); // ging nicht, d.h. im Sniffer war diese Variable nicht im Header end; Wenn ich den Header auslese und mit einem ShowMessage anzeige, so ist er oft komplett leer (was nicht sein kann), und manchmal steht das Encoding des Formulars drin. Meine Frage: wie bekomme ich möglichst volle Kontrolle über den HTTP-Header beim TWebBrowser (exakt diese Browser-Komponente)? Anmerkung: in der Hilfe steht zu Headers: "[..] In der Routine kann dieser Wert vor dem Senden an die Ziel-URL geändert werden." Besten Dank und viele Grüße Caps |
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Ich würde sagen: Gar nicht. Dazu ist TWebBrowser mit seiner API gar nicht gedacht.
|
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Zitat:
|
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Zitat:
Auf was genau beziehst du dich? |
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Danke, ich versuche es ja nicht falsch zu verstehen ;-).
Ich beziehe mich auf die Stelle: 'Headers' enthält die Kopfzeilen, die an den Server gesendet werden, wenn die URL einer HTTP-Botschaft entspricht. Diese Informationen geben beispielsweise die vom Server angeforderte Aktion oder die Art der Daten an (viele der Eigenschaften des TWebRequest-Objekts entsprechen solchen Kopfzeilen). In der Routine kann dieser Wert vor dem Senden an die Ziel-URL geändert werden. Ich bin nach Lesen dieser Stelle zu der Ansicht gelangt, den Header manipulieren zu können. Was kann ich falsch verstanden haben? lg Caps ps Ich habe dann einen String-Cast probiert, weil ich irgendwo (im Forum) gelesen habe, dass es ein per CRLF getrennter String sein muss. |
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
In Grund und Boden argumentiert? ;-)
|
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Hat vielleicht schon jemand probiert, zusätzliche oder andere Header-Variablen mit dem TWebBrowser zu verschicken (erfolgreich)?
|
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Final push. :?::cat:
|
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Eine (vermutliche) Lösung ist hier zu finden:
![]()
Delphi-Quellcode:
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var NewHeaders: OleVariant; begin // do not allow frames or iframes to raise this event if (pDisp as IUnknown) = (WebBrowser1.ControlInterface as IUnknown) then begin // avoid stack overflow: check if our custom header is already set if Pos('MyHeader', Headers) <> 0 then Exit; // cancel the current navigation Cancel := True; (pDisp as IWebBrowser2).Stop; // modify headers with our custom header NewHeaders := Headers + 'MyHeader: Value'#13#10; (pDisp as IWebBrowser2).Navigate2(URL, Flags, TargetFrameName, PostData, NewHeaders); end; end; |
AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Wow, sorry, die Antwort ist mir irgendwie entgangen. Danke, ich schau mal...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz