POST Anfrage senden

semmelkuh

VerwirrterBenutzer
ID: 188086
L
28 April 2006
558
30
Hallo,

ich habe vor in VB.net eine POST Anfrage an eine Internetseite zu stellen (Loginformular). Leider klappt das nicht.
Auf der Suche nach dem Fehler habe ich mir das Firefox AddOn "Live HTTP Headers" besorgt um zu testen, ob ich überhaupt die richtigen Dinge mit dem VB.net Programm übermittel. Das scheint zu stimmen.
Interessant ist aber, dass es aber einfach nicht funktioniert 8O
Selbst wenn ich im AddOn den Wiederholenbutton verwende, funktioniert es nicht, obwohl theoretisch genau das gleiche übertragen wird, wie manuell durch den Browser.
Zum Testen habe ich mir auf dem localhost ein Testscript erstellt, was lediglich eine Input Box hat und einen Absendenbutton. Der Inhalt der Input Box wird dann über var_dump($_POST) angezeigt. Solange ich dieses Script per Hand verwende funktioniert das auch, aber wenn "HTTP Live Headers" dies macht oder auch mein VB.net Programm bekomme ich folgenden Fehler:
Übergebene Daten zu groß!

Die bei der Anfrage übermittelten Daten sind für die POST-Methode nicht erlaubt oder die Datenmenge hat das Maximum überschritten.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 413
localhost
06/16/09 18:21:12
Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
Hierbei bekomme ich auch durch den var_dump Befehl keine Ausgabe:

Ich dachte ja zuerst, dass mein Programm einfach noch fehlerhaft ist, aber es funktioniert ja auch mit dem Firefox Addon nicht, obwohl dies extra den Wiederholenbutton hat, der wirklich das gleiche erneut übermitteln sollte. Dieser Wiederholenbutton funktioniert auch bei anderen Seiten nicht, wobei hier diese Fehlermeldung nicht erscheint, da sie vermutlich deaktiviert wurde.

Hat jemand eine Ahnung was der Fehler in meinem Vorgehen sein könnte?

Danke
semmelkuh
 
Live HTTP Headers loggt folgendes mit:
https://localhost/test.php

POST /test.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,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: https://localhost/testform.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
test=1234

HTTP/1.x 200 OK
Date: Tue, 16 Jun 2009 17:13:07 GMT
Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
X-Powered-By: PHP/5.2.8
Content-Length: 45
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

Wenn ich auf Wiederholen klicke soll er folgendes übertragen:
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,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: https://localhost/testform.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
und als POST-Inhalt:

Bei dem fehlerhaften Request loggt Live HTTP Headers dann folgendes:
https://localhost/test.php

POST /test.php HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,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: https://localhost/testform.php
Content-Type: application/x-www-form-urlencoded
Content-Length: 9
test=1234

HTTP/1.x 413 Request Entity Too Large
Date: Tue, 16 Jun 2009 17:16:02 GMT
Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
Vary: accept-language,accept-charset
Accept-Ranges: bytes
Connection: close
Content-Type: text/html; charset=iso-8859-1
Content-Language: de

Danke
semmelkuh
 
Dir fehlt die Leerzeile zwischen Kopf und Body.
 
Okay, jetzt weiß ich was ihr meint.
Bei Live HTTP Headers ist "test=1234" allerdings etwas eingerückt, was vermutlich die Leerzeile andeuten soll. Im "Original"-Request ist es ja auch so dargestellt.
Ich habe versucht daraus eine richtige Leerzeile zu machen, aber die wird dann immer nur als Einrückung dargestellt.

semmelkuh
 
Benutz mal Wireshark, da hast du wirklich den Hexdump daneben und keine komische Formatierung, die dich verwirrt.
 
Ich hab jetzt noch ein wenig rumprobiert und festgestellt, dass es per Live HTTP Headers funktioniert, wenn ich die Zeile "Content-Length: xx" entferne :ugly:
Die scheint so oder so automatisch hinzugefügt zu werden, da sie im Mitschnitt plötzlich wieder vorhanden ist.
Dann war sie vorher anscheind einfach doppelt vorhanden, was zu dem Fehler führte.

Naja, jetzt funktioniert es schonmal auf diesem Weg... dann kann ich mal versuchen das in mein Programm zu integrieren.

Danke für eure Hilfe :)
semmelkuh