February 14th, 2006
Untersuchen der Datenübermittlung bei POST-Queries
Im Zusammenhang mit der Übertragung von XML-Queries oder Ähnlichem für AJAX ist es von Vorteil zu wissen, wie die verschiedenen Möglichkeiten zum Übertragen von Daten per POST an einen Server genau funktioniert. Einige Fehler bei der Übertragung der Daten lassen sich damit schnell verstehen.
application/x-www-form-urlencoded
Ohne irgendwelche Angaben schickt der Browser die Daten in dieser Kodierung:
Content-Type: application/x-www-form-urlencoded
Sie wird auch verwendet, wenn im Formtag dieses Attribut verwendet wird:
enctype="application/x-www-form-urlencoded"
Der Body der Nachricht sieht dann wie folgt aus:
param1=jjhkjh¶m2=ghzzvfh+asd+asdas&inhalt=inhalt+der+tt%0D%0Asadasd%0D%0Asad%0D%0Aasd%0D%0A%0D%0Aas%0D%0Ada%0D%0As
Sie ist also wie der Content-Type schon sagt URL kodiert und könnte auch einfach wie sie ist in einem GET-Aufruf benutzt werden. Zu beachten ist, dass mit dieser Methode keine Dateien übertragen werden können. Hier wird lediglich der Dateiname übertragen, der eigentliche Inhalt nicht.
multipart/form-data
Die zweite Möglichkeit ist dieser Typ:
enctype="multipart/form-data"
Hierbei wird jeder einzelne Parameter in einem durch einen Boundary-abgetrennten Bereich transportiert, ähnlich wie das bei MIME-Messages geschieht. Diese Methode ist auf jeden Fall zu wählen, wenn eine oder mehrere Dateien zum Server übertragen werden sollen, im Gegensatz zur ersten Methode ist auch der Transport von Binär-Dateien möglich.
Beispiel:
POST /admin/users HTTP/1.1
Host: atlas.mf.devel
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20060117 Firefox/1.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: de,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://atlas.mf.devel/admin/users?action=edit&id=51&order=ldap&sessionid=e4a6a108394d2d124b89e73d0c4ff5391&style=popup&style=popup
Cookie: sessionid=e4a6a108394d2d124b89e73d0c4ff5391
Content-Type: multipart/form-data; boundary=---------------------------12440347477298357471720878039
Content-Length: 4599
-----------------------------12440347477298357471720878039
Content-Disposition: form-data; name="atk"
74609419
-----------------------------12440347477298357471720878039
Content-Disposition: form-data; name="id"
51
-----------------------------12440347477298357471720878039
Content-Disposition: form-data; name="action"
update
-----------------------------12440347477298357471720878039
Content-Disposition: form-data; name="offset"
-----------------------------12440347477298357471720878039
Content-Disposition: form-data; name="order"
ldap
-----------------------------12440347477298357471720878039