AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2
Thema durchsuchen
Ansicht
Themen-Optionen

Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

Ein Thema von Caps · begonnen am 6. Mär 2013 · letzter Beitrag vom 4. Apr 2013
Antwort Antwort
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#1

Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 12:02
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:
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;
Anhand der Kommentare ist das Problem erkenntlich: ich scheine den ausgehenden Header nicht ändern zu können (Sniffer = Netzwerkanalysetool).
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
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 12:37
Ich würde sagen: Gar nicht. Dazu ist TWebBrowser mit seiner API gar nicht gedacht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#3

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 12:42
Ich würde sagen: Gar nicht. Dazu ist TWebBrowser mit seiner API gar nicht gedacht.
Aber wie darf ich dann die Delphi-Hilfe verstehen?
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 12:47
Aber wie darf ich dann die Delphi-Hilfe verstehen?
Einfach nicht falsch....

Auf was genau beziehst du dich?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#5

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 12:56
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.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#6

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 14:05
In Grund und Boden argumentiert?
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#7

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 6. Mär 2013, 15:55
Hat vielleicht schon jemand probiert, zusätzliche oder andere Header-Variablen mit dem TWebBrowser zu verschicken (erfolgreich)?
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#8

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 18. Mär 2013, 09:04
Final push.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 18. Mär 2013, 12:04
Eine (vermutliche) Lösung ist hier zu finden:

http://stackoverflow.com/questions/9...wser-in-delphi

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;
Michael Justin
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#10

AW: Header auslesen/ ändern in TWebBrowser.OnBeforeNavigate2

  Alt 4. Apr 2013, 12:35
Wow, sorry, die Antwort ist mir irgendwie entgangen. Danke, ich schau mal...
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz