fsockopen() + POST + Cookie = Problem
Daniel P.
- php
Moin Forum,
ich habe da ein kleines Problem, was ich trotz Google-Suche und Herumprobiererei nicht in den Griff bekomme. Und zwar bastel ich gerade eine Schnittstelle zu einem ASP-System bzw. die Schnittstelle ist soweit fertig. Um genauer zu sein, geht es um ein Bestellsystem, das bestellte Sachen per POST in das ASP-System schafft. Das klappt soweit auch, die Daten kommen an. Nur kann das ASP-System die Daten nicht unserer Anwendung zuweisen und weigert sich schlicht, die Daten weiterzuverarbeiten. Ich schätze mal, es liegt an einem Cookie, das bei der Verwendung von fsockopen() nicht gesetzt werden möchte. Öffne ich die Verbindung zum ASP-System und sende die Daten per POST, erhalte ich folgenden Response-Header:
HTTP/1.1 200 OK
Connection: close
Date: Mon, 06 Aug 2007 08:52:19 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Content-Length: 1028
Content-Type: text/html
Set-Cookie: ASPSESSIONIDCCSTBDQD=FAKLMHGDBGCJFGKPBLEKCCMB; path=/
Cache-control: private
Den sende ich per header() an den Browser. Das Cookie wird gesetzt, nicht aber für das ASP-System, sondern für meine Seite, was ja totaler Quatsch ist. Also habe ich den Response-Header manipuliert:
HTTP/1.1 200 OK
Connection: close
Date: Mon, 06 Aug 2007 08:54:43 GMT
Server: Microsoft-IIS/6.0
MicrosoftOfficeWebServer: 5.0_Pub
X-Powered-By: ASP.NET
Content-Length: 1028
Content-Type: text/html
Set-Cookie: ASPSESSIONIDCCSTBDQD=FAKLMHGDBGCJFGKPBLEKCCMB; path=/; domain=subdomain.yxz.yxz
Cache-control: private
Ich habe mir erhofft, dass die Domain des Cookies auf das ASP-System gesetzt wird, aber Pustekuchen. Klappt nicht - es wird einfach kein Cookie gesetzt. Auch dann nicht, wenn ich die Funktion setcookie() verwende, obwohl diese TRUE zurückgibt. Ich bin mit meinem Latein echt am Ende, hat jemand vielleicht die Erleuchtung für mich?
Danke und...
Hm, ich seh grad, dass ich gar keine Cookies für fremde Seiten setzen darf. Das ist vielleicht bescheiden. Kennt jemand vielleicht einen Workaround?
hi,
Hm, ich seh grad, dass ich gar keine Cookies für fremde Seiten setzen darf. Das ist vielleicht bescheiden.
Das ist aus Sicherheitsgründen nicht bescheiden, sondern absolut richtig.
Kennt jemand vielleicht einen Workaround?
Ein solcher würde eine Sicherheitslücke darstellen.
gruß,
wahsaga
Ahoi Daniel P.,
also ich bin mir nicht ganz sicher, aber ich würde behaupten das Cookie
müsste auf dem Server gesetzt werden der mit dem ASP-Server
kommuniziert, nicht auf dem client der über den Skript-Server mit dem
ASP-Server kommuniziert. Würde ich so zumindest als logisch empfinden.
MfG
Ahoi Daniel P.,
also ich bin mir nicht ganz sicher, aber ich würde behaupten das Cookie
müsste auf dem Server gesetzt werden der mit dem ASP-Server
kommuniziert, nicht auf dem client der über den Skript-Server mit dem
ASP-Server kommuniziert. Würde ich so zumindest als logisch empfinden.
Das stimmt auch. Nur gehe ich nicht per Browser auf den ASP-Server, sondern per fsockopen(). Der Befehl zum Setzen des Cookies landet dadurch nicht beim Browser, sondern beim Server. Ich schleife den Response-Header zwar durch, kann aber das Cookie für die ASP-Seite nicht setzen, weil das nicht erlaubt ist :-(
Dafür bräuchte ich einen Workaround. Der letzte Schritt wäre natürlich, fsockopen() links liegen zu lassen und die POST-Daten per Browser zu versenden. Das ist aber eine doofe Lösung, weil der Benutzer diesen Weiterleitungsschritt beeinflussen kann...
Ahoi Daniel P.,
Dafür bräuchte ich einen Workaround.
also vll hilft dir ja dieses FF-AddOn beim finden einer möglichkeit.
Damit könntest du herausfinden was dein browser als antwort sendet wenn
du ihm den Cookie-Header des ASP-Servers zuschickst und dort ansetzten.
MfG
Den Header kann ich mir auch mit PHP ausgeben lassen ;-)
Trotzdem danke, ich habe das Ganze nun über eine Zwischenseite gelöst, die die POST-Daten in ein Formular packt und dann per Browser versendet. So sollte es klappen, auch wenn es eine bescheidene Lösung ist...