2010-09-01 3 views
6

Je voudrais passer une requête HTTP brute comme:processus de requête HTTP premières

GET /foo/bar HTTP/1.1 
Host: example.org 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; fr; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 
Accept: */* 
Accept-Language: fr,fr-fr;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: 115 
Connection: keep-alive 
Content-Type: application/x-www-form-urlencoded 
X-Requested-With: XMLHttpRequest 
Referer: http://example.org/test 
Cookie: foo=bar; lorem=ipsum; 

à un client HTTP.

J'ai essayé cat raw.http | curl mais sans succès.

Une suggestion?

Thx.

Répondre

17

données brutes, les données brutes sur:

nc example.org 80 < raw.http 

Si vous devez envoyer les données par un certain programme:

cat raw.http | someprogram | nc example.org 80 

Manual page

+0

+1 awesomely exemple simple – tidwall

+0

ceci est une réponse trompeusement simple. Cela ne fonctionne que dans certains cas. J'ai utilisé ceci et socat. Si le serveur répond avec un codage en segments, vous obtiendrez uniquement la première réponse, qui peut être vide. Je suis venu ici à la recherche d'une réponse correcte que je ne trouve nulle part! – sillyMunky

+0

@sillyMunky Si vous avez une nouvelle question à poser, veuillez utiliser le bouton Poser une question ci-dessus. Par * Première réponse *, voulez-vous dire le premier morceau ou la première réponse à une demande (avec 'Connection: Keep-Alive')? – Lekensteyn

4

La question est étiquetée CURL donc je pensais il était temps il y avait une réponse curl

cat raw.http | curl "telnet://TARGETHOST:80" 

Pour une utilisation normale, il suffit de définir TARGETHOST comme valeur d'en-tête "host". Pour mes besoins (pas normal) je frappais un TARGETHOST qui était une adresse IP avec un serveur qui était à l'écoute des en-têtes d'hôtes spécifiques.

2

Notez qu'aucune de ces solutions ne fonctionnerait si vous avez besoin de httpS au lieu de http. Dans ce cas, vous pouvez l'envoyer de cette façon:

$ cat raw.http | openssl s_client -connect server:443 
+0

thx pour cela aussi, belle addition;) – abernier

+7

Comment voyez-vous la réponse renvoyée par le serveur dans ce cas? –