Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Serveur web incompatible avec la methode post

8 réponses
Avatar
Patrice Chevee
Bonjour,

je bloque sur un problème que j'ai rencontré depuis 2003, date à laquelle
j'ai essayé d'écrire un mini serveur web. J'ai tout essayé, je suis
désespéré.

Le problème est le suivant: lorsqu'on poste un formulaire en method=post, le
navigateur envoie théoriquement une entête comportant une ligne POST,
quelques lignes de baratin (genre accept *.jpeg, lang=en,fr etc), suivi
d'UNE LIGNE VIDE, elle même enfin suivie d'une ligne comportant la liste des
variables postées et leurs valeurs séparées par un signe égal, le tout en
format url-encoded.

Je me suis aperçu avec horreur que seul IE6 dans un environnement spécifique
(Win2k ou Win98) se comporte comme prévu; dans les autres cas, j'ai essayé
IE6 sous XP et aussi Mozilla Firefox, le navigateur refuse de poster la
ligne url encodée.

Voici pour l'exemple: j'ai écrit une espece de proxy espion pour sniffer le
protocole entre le client et le serveur web (ici Tinyweb de chez ritlab).

Voici ce que donne IE: http://mircscriptsfrfm.com/defis/socketweb-IE.htm

Et voici ce que donne FireFox:
http://mircscriptsfrfm.com/defis/socketweb-FF.htm

J'ai mis en bleu ce que dit le client, en noir ce que dit le serveur, et en
violet les commentaires de mon proxy. La ligne vide est symbolisée par 3
etoiles.

Dans le cas IE, on voit la variable url encodée, dans le cas FF, il poste
une ligne vide.

Il semblerait que IE fonctionne, mais c'est un bug! Dans tous les autres cas
testés, soit le navigateur poste une ligne vide, soit il ne poste pas de
ligne du tout (ce qui est catastrophique, car le serveur que j'ai écrit gèle
dans ce cas là).

Je n'y comprends rien depuis 3 ans, pouvez-vous m'aider? Honnêtement ça me
ferait beaucoup plaisir d'avoir la solution!

Merci et bien à vous tous,

P.C.

P.S. Pour info, le source du script perl appelé est en
http://mircscriptsfrfm.com/defis/control.htm . Si le code du proxy vous
intéresse, me contacter: il s'agit d'un script pour mirc.

8 réponses

Avatar
Fabien LE LEZ
On Thu, 23 Feb 2006 19:48:35 +0100, "Patrice Chevee"
:

P.S. Pour info, le source du script perl appelé est en
http://mircscriptsfrfm.com/defis/control.htm



Tu peux donner le code HTML exact fourni au navigateur ?

J'utilise quant à moi le code ci-dessous, et Netcat comme serveur
"bidon" (i.e. il se contente d'afficher ce qu'il reçoit, et te permet
de taper une réponse à renvoyer).

----début de test.html----
<html>
<body>

<form method=post action="http://127.1:200/normal">
<input name=machin valueD>
<input name=bidule valueD>
<input type=submit value=Submit>
<form>

</body></html>
----fin de test.html----

En ligne de commande :
nc -l -p 200

POST /normal HTTP/1.1
Host: 127.1:200
User-Agent: Mozilla/5.0 (Windows; U; Windows ...
Accept: text/xml,application/xml,applicatio...
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 19

machinD&biduleD<Le curseur reste ici>

(Note : j'ai coupé les lignes trop longues)

Il est important de noter que le curseur reste à la fin de la dernière
ligne : Firefox envoie 19 octets (comme prévu), et _pas_ de retour à
la ligne.
Avatar
Patrice Chevee
Fabien LE LEZ wrote:


Tu peux donner le code HTML exact fourni au navigateur ?



Oui, je peux même faire mieux: j'ai uploadé le script perl en
http://www.mircscriptsfrfm.com/cgi-bin/control.pl .

J'utilise quant à moi le code ci-dessous, et Netcat comme serveur
"bidon" (i.e. il se contente d'afficher ce qu'il reçoit, et te permet
de taper une réponse à renvoyer).



C'est sympa ce truc, y en a t il une version pour windows?


machinD&biduleD<Le curseur reste ici>

(Note : j'ai coupé les lignes trop longues)

Il est important de noter que le curseur reste à la fin de la dernière
ligne : Firefox envoie 19 octets (comme prévu), et _pas_ de retour à
la ligne.



Ca par contre, c'est une sacrée piste. Car a priori, mon serveur bidon écrit
en script mirc me montre que la ligne est sur le point d'être postée, vu
qu'il fournit même le Content-length (la longueur est exacte).

Merci de ta réponse prompte.
Avatar
Fabien LE LEZ
On Thu, 23 Feb 2006 23:12:31 +0100, "Patrice Chevee"
:

J'utilise quant à moi le code ci-dessous, et Netcat comme serveur





C'est sympa ce truc,



Non, c'est totalement indispensable. Presque autant qu'un clavier.

y en a t il une version pour windows?



Oui. N'as-tu pas remarqué que ma machine est sous Windows ?

<http://www.google.com/search?&q=netcat%20windows%20download>

Il est important de noter que le curseur reste à la fin de la dernière
ligne : Firefox envoie 19 octets (comme prévu), et _pas_ de retour à
la ligne.



Ca par contre, c'est une sacrée piste.



Yep. La plupart des protocoles fonctionnent en "ligne par ligne" :
SMTP, POP3, HTTP/GET, etc. Même HTTP/POST si tu utilises
multipart/form-data.
L'exception étant celui-ci (HTTP + POST + urlencoded). J'ai été le
premier surpris.
Avatar
Patrice Chevee
Fabien LE LEZ wrote:
On Thu, 23 Feb 2006 23:12:31 +0100, "Patrice Chevee"
:


y en a t il une version pour windows?



Oui. N'as-tu pas remarqué que ma machine est sous Windows ?

<http://www.google.com/search?&q=netcat%20windows%20download>



Intéléchargeable. Tu peux me l'envoyer stp? Enleve _OTEZ-MOI_ de mon adresse
email.

Je te remercie beaucoup.
Avatar
Fabien LE LEZ
On Fri, 24 Feb 2006 00:19:55 +0100, "Patrice Chevee"
:

Intéléchargeable.



Non. Le lien que je t'ai indiqué est une page sur Google. Si la
première adresse ne fonctionne pas, essaie la suivante.

Enleve _OTEZ-MOI_ de mon adresse
email.



Non. Je ne fais pas ce genre de chose.
Avatar
Patrice Chevee
Fabien LE LEZ wrote:
On Fri, 24 Feb 2006 00:19:55 +0100, "Patrice Chevee"
:





Enleve _OTEZ-MOI_ de mon adresse
email.



Non. Je ne fais pas ce genre de chose.



C'est pas gentil ca :)) En tout cas, merci de ton aide. J'ai finalement
réussi a télécharger la chose.
Avatar
Fabien LE LEZ
On Sat, 25 Feb 2006 12:48:58 +0100, "Patrice Chevee"
:

Non. Je ne fais pas ce genre de chose.



C'est pas gentil ca :)



Comment ça ? Si tu ne mets pas d'adresse valide dans ton Reply-to,
c'est bien pour qu'on ne puisse pas te répondre, non ?
Avatar
Patrice Chevee
Fabien LE LEZ wrote:


Comment ça ? Si tu ne mets pas d'adresse valide dans ton Reply-to,
c'est bien pour qu'on ne puisse pas te répondre, non ?



OK c'est réparé.