POST-Daten und -Datei per Socket
Andreas Dölling
- https
Hallo,
ich laboriere hier schon seit geraumer Zeit an einer POST-Anfrage herum, die ich über einen Proxy an einen externen Zielrechner senden will.
Grundsätzlich klappt das, und vor allem klappt auch das, was ich für problematischer gehalten hatte: die gepostete Datei kommt an.
Das Problem sind die die übrigen POST-Daten, also die Inhalte der Textfelder des versendeten Formulars. Die kommen nicht als POST-Daten beim Zielrechner an.
Ich vermute, daß ich einen Fehler im Aufbau meines Requests habe. So sieht das im Moment aus:
POST http://{url_zielrechner} HTTP/1.0
Host: {url_proxy}
Referer: http://{url_request_script}
User-Agent: Mozilla/4.05C-SGI [en] (X11; I; IRIX 6.5 IP22)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Charset: iso-8859-1,*,utf-8
Proxy-Authorization: Basic YjEzOAcfOnTrimV0
Content-Type: multipart/form-data; boundary=---------------------------e18cfe46b9
Content-Length: 191674
Connection: close
-----------------------------e18cfe46b9
Content-Type: application/x-www-form-urlencoded
Content-length: 51
firstname=Theo&lastname=Test&button_submit=Absenden
-----------------------------e18cfe46b9
Content-Disposition: form-data; name="picture"; filename="testbild.jpg"
Content-Type: image/pjpeg
ÿØÿà[.....]
-----------------------------e18cfe46b9--
Wie gesagt: das Bild wird beim Zielrechner erkannt ($_FILES), aber $_POST ist leer.
Könnt Ihr mir weiterhelfen?
Thanx und ciao,
Andreas
Hallo,
Ich vermute, daß ich einen Fehler im Aufbau meines Requests habe. So sieht das im Moment aus:
-----------------------------e18cfe46b9
Content-Type: application/x-www-form-urlencoded
Content-length: 51
firstname=Theo&lastname=Test&button_submit=Absenden
Da sieht falsch aus. Bei Content-Type: multipart/form-data kommen _alle_ Daten, auch die Form-Feldinhalte, in jeweils _einem_ Part, getrennt durch boundary.
Also:
-----------------------------e18cfe46b9
Content-Disposition: form-data; name="firstname"
Theo
-----------------------------e18cfe46b9
Content-Disposition: form-data; name="lastname"
Test
-----------------------------e18cfe46b9
Content-Disposition: form-data; name="button_submit"
Absenden
-----------------------------e18cfe46b9
Content-Disposition: form-data; name="picture"; filename="testbild.jpg"
Content-Type: image/pjpegÿØÿà[.....]
-----------------------------e18cfe46b9--Wie gesagt: das Bild wird beim Zielrechner erkannt ($_FILES),
Das Bild hat ja auch seinen eigenen Part.
Zeilenwechsel ist jeweils CRLF.
viele Grüße
Axel
Hallo Axel,
danke für Deinen Tip! Das war die Lösung. Darauf wäre ich nicht gekommen, weil ich überall immer nur gelesen habe, daß man die POST-Daten wie einen GET-String in den Request schreibt.
Dank Deinem Hinweis klappt es jetzt aber.
Thanx und ciao,
Andreas