Version complète: sur le forum Webmaster Hub : requête GET
Webmaster Hub > Informatique & Internet > Les Navigateurs
clavie
Savez-vous quelle requête génère un navigateur (IE, Firefox, ec) pour obtenir une page internet quelconque ?

l'exemple suivant ne marche pas à tous les coups, que manque-t-il ? certains serveurs attendent-ils une identification de la part du navigateur ?

GET http://www.xxx.fr HTTP/1.1
Host: www.xxx.fr
enroc
Quand tu cliques sur un lien, par defaut c'est du GET, un fomulaire par defaut c'est du POST. De quel exemple parles-tu ?
Tizel
CITATION(clavie @ mardi 12 juillet 2005, 15h28)
GET http://www.xxx.fr HTTP/1.1
Host: www.xxx.fr
*


La requête correcte serait plutôt (Cf. http://www.iprelax.fr/http/http_session.php) :
CITATION
GET / HTTP/1.1
Host: www.xxx.fr


Tizel
clavie
lorsqu'un navigateur (IE par exemple) accède à la page : www.lemonde.fr
quel est le texte de la requête HTTP générée ?

est-ce simplement :

GET http://www.lemonde.fr HTTP/1.1

ou quelque chose de plus complet ? (identification du navigateur etc).
Tizel
Il peux y avoir plein de choses :

- Adresse de la page demandée (seul élément obligatoire)
- La page référer (par exemple, le script de mail de free se base sur cette info pour savoir à qui envoyer le mail)
- Le navigateur (ou adresse du robot, par exemple, googlebot)
- Le contenu des cookies associés à l'adresse se trouvant sur le PC de l'utilisateur
- Le type d'encodage supporté par le navigateur
- Le langage favoris du navigant
- les formats de fichiers acceptés...

Certains sites refusent les requêtes incomplètes (par exemple, qui ne spécifient pas le navigateur) afin de se protéger des aspirateurs...

Tizel
clavie
justement, il peut y avoir plein de choses.
j'aimerais savoir quelle est le texte complet d'une requête générée par un navigateur standard (comme Internet Explorer) pour être sûr d'obtenir la page demandée.
peut-on avoir un exemple complet ?
merci.
Xavier
Ça donne quelque chose comme ça...

CODE
GET / HTTP/1.1
Host: www.lemonde.fr
User-Agent: ...
Accept: text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: fr;q=0.8,fr-fr;q=0.6,en;q=0.4,en-us;q=0.2
Accept-Encoding: ... (gzip,deflate...)
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: ...
Et probablement pas mal d'autres choses. Logiquement la seule chose vraiment indispensable c'est
CODE
GET /chemin/de/la/page/ HTTP/1.1
(mais il faudrait vérifier) wink.gif

Ce que tu as faux c'est que la requête GET ne contient pas le nom de l'hôte, elle ne se fait que si la connexion à l'hôte est déjà faite, elle ne contient donc que le chemin de la page tongue.gif
clavie
Merci Xavier,

la seule requête : GET /chemin/de/la/page/ HTTP/1.1

marche pour certaines pages, mais certains sites ne l'acceptent pas et renvoient des messages d'erreur, notamment des blogs ou des adresses de fils RSS.

Je n'y connais pas grand-chose en HTTP, comment savoir quelle est la requête exacte formulée par le navigateur Internet Explorer par exemple ? As-tu un exemple complet, ou bien sais-tu comment en obtenir un ?
Xavier
Pour Firefox, il existe l'extension LiveHTTP Headers de laquelle j'ai extrait ce que j'ai dit plus haut.

Tu pourrait nous donner un exemple, avec la requête que tu envoie, l'hôte et la réponse (erreur) ?
clavie
je vais consulter cette extension.

je vous donne un exemple qui marche et un qui ne marche pas.
savez-vous quelle requête marcherait pour www.lemonde.fr ?


GET http://www.lefigaro.fr HTTP/1.1
host: www.lefigaro.fr

****** un exemple qui marche, le résultat :
HTTP/1.1 200 OK

Date: Wed, 31 Aug 2005 00:29:26 GMT

Server: Apache/1.3.33 (Unix) PHP/4.2.2

Last-Modified: Tue, 30 Aug 2005 19:28:28 GMT

ETag: "44644-15d80-4314b35c"

Accept-Ranges: bytes

Content-Length: 89472

Content-Type: text/html



<!--sdvD=header_htdig-->
<HTML><HEAD>

<!--sdvD=head-->
<!--fig:file/lefigaro/skul/edition/head.sk-->

... et tout le reste de la page.


****** Un exemple qui ne marche pas :
GET http://www.lemonde.fr HTTP/1.1
host: www.lemonde.fr

****** le résultat :
HTTP/1.1 404 Not Found

Server: Apache

X-Auth-Control: mod_auth_lemonde

Content-Type: text/html

Content-Length: 7612

Date: Wed, 31 Aug 2005 00:40:47 GMT

Connection: keep-alive



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Le Monde.fr : Page non trouvée</title>
<link rel="stylesheet" type="text/css" href="http://medias.lemonde.fr/mmpub/css/commun-gr.css">
<link rel="stylesheet" type="text/css" href="http://medias.lemonde.fr/mmpub/css/commun.css">
<link rel="stylesheet" type="text/css" href="http://medias.lemonde.fr/mmpub/css/www.css">
</head>

...
clavie
Merci Xavier, j'ai téléchargé l'extension qui permet de lire le texte des requêtes sous firefox. ça me sera très utile. je ferai des essais demain.
Xavier
CITATION(clavie @ mercredi 31 août 2005, 02h45)
****** Un exemple qui ne marche pas :
GET http://www.lemonde.fr HTTP/1.1
host: www.lemonde.fr
*
Comme dit et redit et re-redit dans ce sujet, ta requête est fausse. En l'occurence, tu appelles la page http://www.lemonde.fr/http://www.lemonde.fr (oui oui, tu as bien vu, deux fois le nom de l'hôte collé, donc une page http://www.lemonde.fr à l'intérieur même du site du monde) qui bien entendu n'existe pas !

Si la première fonctionne, c'est uniquement parce que la page http://www.lefigaro.fr/http://www.lefigaro.fr redirige vers http://www.lefigaro.fr/ (parce qu'ils n'ont pas de page d'erreur 404, c'est donc de la pure chance pour toi.)

Ta requête doit donc être
CITATION
GET / HTTP/1.1
host: www.lemonde.fr
ou
CITATION
GET / HTTP/1.1
host: www.lefigaro.fr

C'est clair ? Avec / tu appelles la racine du site, autrement dit la page index.

Dans GET tu ne dois pas répéter le nom de l'hôte. Uniquement le chemin à l'intérieur du site lui-même. Ainsi pour avoir la page http://www.lemonde.fr/mapage.html tu dois avoir la requête suivante :
CODE
GET /mapage.html HTTP/1.1
host: www.lemonde.fr
Ne pas remettre le nom de l'hôte dans Get. Et au passage ne pas oublier le / au début pour être sûr d'appeler la page depuis la racine (je ne sais pas si les serveurs acceptent autre chose d'ailleurs...)

C'est bon cette fois ? Je dois le redire encore ? Je vais finir par me lasser à force tongue.gif wink.gif
clavie
oui, oui. thanks.
j'ai finalement compris. je me basais sur un exemple donné sur un site explicatif de HTTP, et évidemment faux.
et comme cela marchait pour certains sites (en fait, ne traitant pas l'erreur 404), j'étais persuadé que l'erreur provenait de la nécessité d'une identification du navigateur.
l'extension firefox est précieuse pour observer les requêtes et leurs résultats.
merci !!!
clavie
la requête fonctionne normalement, sauf pour le site www.blogspirit.com
La requête GET ne donne aucune réponse (pas même de message d'erreur, rien).

et pourtant, je tente la même requête que celle indiquée dans l'extension de Firefox (qui lui, obtient la page demandée).

GET / HTTP/1.1
Host: www.blogspirit.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
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: 300
Connection: keep-alive

Quelqu'un a une idée ?

merci.
Xavier
Tu ne reçois rien ? Du tout ? Vraiment rien ?
Logiquement tout serveur devrait répondre aux requêtes. S'il ne le fait pas, c'est qu'il est indisponible tongue.gif

Je soupçonne que ce soit ton script/robot/... qui ne soit pas capable d'interpréter la réponse. En effet, il y a une redirection :
CODE
Location: http://www.blogspirit.com/fr/index.php

Donc il y a réponse mais effectivement pas de page transférée wink.gif
clavie
Non, pas de réponse du tout.
J'envoie la commande à l'aide d'un langage de programmation qui ouvre un flux lorsque la connection est établie. Mais le flux est vide. rien à lire. alors que le serveur n'est pas indisponible.

C'est la même chose lorsque je demande une page dont je connais l'adresse exacte (non transférée).

Le serveur ne répond pas à ma requête.

J'ai depuis un indice. J'utilise une connection free, et parait-il, blogspirit a des problèmes avec les connections free. problème de proxy ... mais je n'y connais rien. Ca te dit quelque chose ?
Dan
Bonjour,

En passant par l'analyseur d'entêtes http des outils du Hub on voit effectivement la redirection wink.gif
CITATION
URL: http://www.blogspirit.com/
HTTP/1.1 302 Found
Date: Thu, 08 Sep 2005 13:46:34 GMT
Server: Apache
Vary: Host
Set-Cookie: PHPSESSID=bc37f4e30052e7186a879a6dcc222301; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: lang=en; expires=Thu, 08 Sep 2005 14:46:34 GMT; path=/; domain=.blogspirit.com
Location: http://www.blogspirit.com/en/index.php
Connection: close
Content-Type: text/html; charset=utf-8

Redirection vers :
URL: http://www.blogspirit.com/en/index.php
HTTP/1.1 200 OK
Date: Thu, 08 Sep 2005 13:46:34 GMT
Server: Apache
Vary: Host
Set-Cookie: PHPSESSID=fea1cf448cb769d2c9d1c708ae866500; path=/
Expires: Thu, 08 Sep 2005 13:56:36 GMT
Cache-Control: max-age=600, must-revalidate
Pragma: public
Set-Cookie: lang=en; expires=Thu, 08 Sep 2005 14:46:34 GMT; path=/; domain=.blogspirit.com
ETag: 6a88889219261c7c915ee681af09a027
Content-Length: 11616
Connection: close
Content-Type: text/html; charset=utf-8
clavie
D'accord, il y a une indirection. Cependant, ce n'est pas le problème.

Etant donné que le serveur ne répond rien, je n'ai pas la réponse.
Si je demande la page sans indirection, c'est pareil, pas de réponse à la requête :

GET /en/index.php HTTP/1.1
Host: www.blogspirit.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
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: 300
Connection: keep-alive
clavie
Quelqu'un voit-il la raison de cette absence de réponse ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.