400 http bad request
-
strlen("GET /faq/index.html HTTP/1.1\r\nHost: www.kernel.org\r\n\r\n") == 54
-
kann es sein, dass bei dir \n als nur ein Buchstabe gewertet wird ubnd bei mir als 2? und dass gleiche bei \r? Oder dass das generell in der Winapi so ist?
-
gibt der benutzer den request-string in ein eingabefeld ein? wenn ja müsstest du wirklich aus 2 zeichen ein zeichen machen. '\' '\n' => '\n'
falls es aber im quelltext steht wird es immer nur als 1 zeichen gezählt. auf jeder plattform.
-
also der Benutzer kann es eingeben aber ist dass nicht eigentlich egal weil bei -.- hats doch auch funktioniert
-
klg71 schrieb:
also der Benutzer kann es eingeben aber ist dass nicht eigentlich egal weil bei -.- hats doch auch funktioniert
Wie gibt er es denn ein? Wenn du eine Benutzereingabe hast, werden die Zeichen darin natürlich nicht escapet.
-
er gibt es in ein Editfeld ein muessen die Zeichen denn unbedingt escapet werden?
-
klg71 schrieb:
er gibt es in ein Editfeld ein muessen die Zeichen denn unbedingt escapet werden?
Ja natürlich! Sonst sendest du mit einem "\n" kein Neue-Zeile-Zeichen, sondern ein Backslash- gefolgt von einem "n"-Zeichen. Das mag der HTTP-Server natürlich garnicht.
-
und wie ändere ich dass ?
irgendwas mit substr() und replace?
-
klg71 schrieb:
und wie ändere ich dass ?
irgendwas mit substr() und replace?Ja. Zum Beispiel damit.
Btw.: Du könntest dir das Programm Wireshark mal anschauen. Da kannst du dir den Netzwerkverkehr ansehen und überprüfen, ob das Programm wirklich das sendet, was du vermutest.
-
also ich habs jetz hinbekommen mein quelltext dazu:
bool c=0; while(request.npos!=(a=(request.find('\\')))) { if(c) { request.replace(a,1,"\n"); c=0; } else { request.replace(a,1,"\r"); c=1; } request.erase(a+1,1); }
Das Programm funktioniert jetzt tadellos:D
Frohes Neues Jahr