Nous utilisons le mécanisme telnet pour envoyer une requête http au serveur et obtenir la réponse. Nous avons remarqué une chose étrange lors de l'utilisation de telnet pour l'envoi de la requête HTTP GET. La première méthode fonctionne dans la plupart des environnements, mais elle ne fonctionne pas dans un environnement. Mais la seconde méthode (au lieu du chemin relatif, utilisez le chemin complet) fonctionne bien dans cet environnement.Demande HTTP utilisant telnet n'obtenant aucune réponse
**
- Method1:
**
(printf « GET /test.jsp HTTP/1.0 \ nAccept: */* \ Nuser-Agent: WatchDog \ n \ n "; dormez 9) | telnet xx.xx.xx.xx 8093 Essai xx.xxx.xx.xx ... Connecté à xx.xx.xx.xx. Le caractère d'échappement est '^]'.
Connexion fermée par un hôte étranger.
**
- Method2:
**
(printf « GET http://xx.xx.xx.xx:8093/test.jsp HTTP/1.0 \ nAccept: */* \ Nuser-Agent: Watchdog \ n \ n "; dormez 9) | telnet xx.xx.xx.xx 8093
Trying xx.xx.xx.xx...
Connected to xx.xx.xx.xx.
Escape character is '^]'.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=91643475E80038EA8770CE6803EE320C; Path=/
Content-Type: text/html;charset=UTF-8
Content-Language: zh-US
Content-Length: 42
Date: Mon, 03 Dec 2012 04:25:09 GMT
Connection: close
The Server is Running
Connection closed by foreign host.
Pourquoi le method1 ne fonctionne pas dans un seul environnement? avons-nous besoin de vérifier quelque chose dans cet environnement?
Pls vos suggestions ...
Merci, Sekhar
"Un serveur HTTP 1.1 peut refuser des requêtes HTTP qui n'ont pas de jeu d'hôtes, soit dans l'URI de requête absolue, soit dans un en-tête d'hôte" -> Pouvez-vous me dire dans quels cas cela peut se produire? parce que nous envoyons une requête HTTP au serveur HTTP 1.1 sans hôte et en utilisant un chemin relatif qui fonctionne bien dans la plupart des environnements. – Sekhar
@Sekhar non, c'est un détail d'implémentation qui devrait être vérifié avec le fabricant de votre serveur web. RFC indique que le serveur peut essayer d'utiliser des heuristiques (par exemple, l'examen du chemin URI pour quelque chose d'unique à un hôte particulier) afin de déterminer quelle ressource exacte est demandée. "_] (Http: // tools .ietf.org/html/rfc2616 # section-5.2). Si vous réparez simplement votre requête, c'est-à-dire faites une requête HTTP valide contenant un hôte, soit en en-tête ou en URL, et '\ r \ n' pour séparer les en-têtes, cela devrait fonctionner pour tous les serveurs. – CodeCaster