WinHttp Headers vom Request

    • [ gelöst ]

      WinHttp Headers vom Request

      Hallo,

      ich benutze die WinHttp-Lib und kriege es nicht hin, die Headers eines Requests auszulesen. Mit der Funktion _WinHttpQueryHeaders kriege ich nur die Headers der Serverantwort auf die Anfrage. Ich will aber irgendwie die Headers der Anfrage auslesen. Hoffe einer kann mir helfen!

      Danke!

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DarkManX“ ()

      DarkManX schrieb:

      Mit der Funktion _WinHttpQueryHeaders kriege ich nur die Headers der Serverantwort auf die Anfrage. Ich will aber irgendwie die Headers der Anfrage auslesen. Hoffe einer kann mir helfen!


      ? Weiß nicht genau was du willst, hier mal ein Beispiel:

      Spoiler anzeigen

      AutoIt-Quellcode

      1. #include <WinHTTP.au3>
      2. $hw_open = _WinHttpOpen("AutoIt")
      3. $hw_connect = _WinHttpConnect($hw_open,"autoit.de" )
      4. $h_openRequest = _WinHttpOpenRequest($hw_connect, "GET", "/", "HTTP/1.1")
      5. _WinHttpSendRequest($h_openRequest)
      6. _WinHttpReceiveResponse($h_openRequest)
      7. $header = _WinHttpQueryHeaders($h_openRequest)
      8. MsgBox(0, "Header", $header)
      9. If _WinHttpQueryDataAvailable($h_openRequest) Then
      10. Local $data=""
      11. Do
      12. $data&=_WinHttpReadData($h_openRequest)
      13. Until @error<>0
      14. MsgBox(0, "Body", $data)
      15. ClipPut($data) ; Kannst du in eine html datei kopieren und ausführen
      16. EndIf
      17. _WinHttpCloseHandle($h_openRequest)
      18. _WinHttpCloseHandle($hw_connect)
      19. _WinHttpCloseHandle($hw_open)


      Ich glaub dir geht es aber darum, wo man überhaupt das Packet her bekommt das man schicken muss?
      Das bekommt man z.B. mit dem Addon Live HTTP Headers für Firefox.

      Gruß Greek

      chip schrieb:

      Ein Request ist die Antwort des Servers.

      Eine RESPONSE ist die Antwort des Servers!

      DarkManX schrieb:

      Ich will aber irgendwie die Headers der Anfrage auslesen.

      WinHTTP-Intern kenne ich dafür keine Möglichkeit.
      Mein Tipp: Benutze einen HTTP/HTTPS-Sniffer, wie "Fiddler2" dafür, damit funktioniert es problemlos. Du darfst nur nicht vergessen, den WinHTTP-Traffic über Fiddler zu leiten, also Fiddler als Proxy für WinHTTP zu setzen. ( Standardmäßig nutzt Fiddler glaube ich 127.0.0.1:8888 )
      SEuBo hat mich - glaube ich - richtig verstanden, die anderen leider nicht. Um es für alle nochmal verständlicher auszudrücken:
      Die Antwort eines Servers auf eine Anfrage hat Headers, die kann man mit _WinHttpQueryHeaders auslesen. Die Anfrage selbst hat auch Headers, die man selber erstellt. Jetzt wollte ich diese Headers der Anfrage auslesen, da es bei mir nicht richtig funktioniert und die Headers dynamisch erstellt werden. Damit will ich gucken, was mein Script denn so für Headers erstellt und wo ggf der Fehler liegt.

      Ist ja ziemlich blöd die Anfrage über ein Proxy zu schicken um die Headers rauszukriegen. Es muss doch eig ne Möglichkeit geben, diese irgendwie auszulesen. Ein RequestHandle via WinHttp ist ja offenbar die Rückgabe der DllCall()-Funktion zurück. Der Rückgabetyp ist aber anscheinend polymorph. Habe da nicht so richtig durchgeblickt was denn dll's sind, habe sonst immer nur Webseiten programmiert. Worauf verweist nun dieser RequestHandle? ?(

      Grüße

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DarkManX“ ()

      DarkManX schrieb:

      Worauf verweist nun dieser RequestHandle?

      Dieser Request-Handle ist ein sogenannter hInternet-Handle. Und ja, es gibt mit Sicherheit eine Möglichkeit, diese Request Headers auszulesen. Nur ist das von Microsoft wohl nicht vorgesehen, und deswegen auch nicht über die integrierten Funktionen der WinHTTP API zu lösen. Die Möglichkeit, einen Sniffer zu verwenden ist mit Sicherheit die unkomplizierteste ;)
    autoit.de Webutation