Protocole http - mise à jour

Soyez le premier à donner votre avis sur cette source.

Vue 8 473 fois - Téléchargée 410 fois

Description

========================================
LE PROTOCOLE HTTP/1.0 - 22:16 18/09/2002
========================================
>> www.myhackerside.fr.St <<
Programmation Rézo

Intro :
=-=-=-=
Ce document à été redigé par C. CHIRIAC , et à été repris depuis le document
rfc1945, mais en résumé . Il ne contient pas donc toutes les informations
mais permet de se faire une idée simpliste sur le protocole HTTP .
En effet , je trouve barbant de lire 54 pages pour enfaite en comprendre
que 10 page au max , j'ai donc repris ce document , et recopié en plus
simple les informations indispensables au bon fonctionnement du server
HTTP style Apache . En même temps ça m'a servi à apprendre :) , et je
vais partager ce que j'ai compris avec vous ;) ...

Vous utilisez ça tous les jours alors certains trucs comme la methode get vous
semblera évidente, mais bon fallais comme même l'expliquer pour faire pro :P .
Bonne prog à tous , akh .

Les types de methode :
=-=-=-=-=-=-=-=-=-=-=-=

GET / HEAD / POST
Si la methode est une autre le server renvoye erreur 501 : Not Implemented
Certains caractére peuvent apparaitre sous la form %HEX HEX (ex %AF )

- METHODE GET :
Elle demande au server des informations , avec des headers , du style MINE .
Avec la methode Get , il faut prendre en compte le champ : If-Modified-Since !

- METHODE HEAD :
Elle est identique à la methode Get , sauf qu'à l'origine elle ne doit pas contenir
de headers Mine , et le server ne devras pas en retourner aussi .
Elle va donc ignorer les headers envoyés , et n'envoyer que le contenu du document .

- METHODE POST :
Elle indique au server de faire suivre les informations headers vers les document
du uri demandé , donc en quelques sorte elle fait suivre les varaiables vers les
scripts ...
Vu que le script n'est pas obligé de répondre , les réponses du server devraient être :
code 200 (OK) ou 204 (pas de contenu)
NB1 : Un champ Content-Length est obligatoire dans le contenu de la requette POST , et la longeur
des informations spécifiées devra être correctement introduite . Dans le cas contraire
le server répondra un message 400 (requête incorrecte) !
NB2 : Aucun cache ne peut être disponible pour ce type de requette vu que la réponse
n'est pas tj la même .

Les réponses des servers :
=-=-=-=-=-=-=-=-=-=-=-=-=-=

· 1xx: Information - Non utilisé, pour usage futur
· 2xx: Succès - L'action a été correctement reçue, interprétée, et exécutée.
· 3xx: Redirection - Une décision supplémentaire doit être prise pour terminer la requête
· 4xx: Erreur Client - La requête présente une erreur de forme et ne peut être satisfaite
· 5xx: Erreur Serveur - La requête est valide, mais le serveur ne peut la satisfaire

Réponses par défault :
| "200" ; OK OK
| "201" ; Created Créé
| "202" ; Accepted Accepté
| "204" ; No Content Pas de contenu
| "301" ; Moved Permanently Changement définitif
| "302" ; Moved Temporarily Changement temporaire
| "304" ; Not Modified Non modifié
| "400" ; Bad Request Requête incorrecte
| "401" ; Unauthorized Non autorisé
| "403" ; Forbidden Interdit
| "404" ; Not Found Non trouvé
| "500" ; Internal Server Error Erreur interne serveur
| "501" ; Not Implemented Non implémenté
| "502" ; Bad Gateway Erreur de routeur
| "503" ; Service Unavailable Indisponible

- Les informations 1xx :
Cette classe de réponse est actuellement réservée pour de futures applications, et
consiste en des messages avec une ligne d'état, des champs d'en-têtes éventuels,
et terminés par une ligne vide (CRLFCRLF).
HTTP/1.0 ne définit actuellement aucun de ces codes, lesquels ne constituent pas une
réponse valide à des requêtes HTTP/1.0. Il restent cependant exploitables à titre
expérimental, dépassant le contexte de la présente spécification.
NB : Comprenez ce que vous en voulez , mais ce type de réponses n'est pas encore utilisé ...

- Les succés 2xx :
  • 200 Ok : Indique que la requette à été reçue , que le script ou le server va renvoyer un

contenu .
  • 201 Crée : Indique qu'une ressource à été crée sur le server .

NB : Cette réponse doit être envoyé aprés que le server ait crée la ressource .
  • 202 Accepté : La requette à été reçue et interprétée correctement, seulement

le server n'a pas encore finit de créer la ressource ...
PS : Ceci equivaut aux obligations du time out d'execution des scripts ...
  • 204 Pas de Contenu : Ce code indique que le server à compris la requette, mais qu'aucune réponse

ne peut être donée, soit parceque le document est vide , soit parceque le script
ne renvoye aucune réponse .

- Redirection 3xx : Il permet de faire des redirections de requettes
  • 300 Choix Multiples : Le document se trouve à plusieurs emplacements sur le server, et

leur emplcaments seronts indiqués par la champ Location .
  • 301 Changement de champ définitive : L'url indiqué sera changée et lorsque l'utilisateur

rentre une nouvelle fois la mauvaise url , elle sera automatiquement redirigée
vers la variable champ définie par Location comme pour la réponse 300 .
  • 302 Changement d'adresse Temporaire : La requette est dirigée mais pas enregistrée puisque

l'url ne sera pas tj redirigé .
  • 304 Non modifié : Ceci correspond aux requette Get qui contiennet la valeur If-Since-Modified,

et indiquent au client que le document n'a pas été modifié , donc disponible en cache .

- Erreurs 4xx: Coté client
  • 400 Requette incorrecte : La requette du client à une erreur de syntaxe ou semble ne pas

avoir été comprise .
  • 401 Non autorisé : Ceci est la réponse quand une page à besoin d'une autentification pour

etre envoyée , cad que la requette doit comporter le champ WWW-Authenticate . Si c'est le cas
et que le server renvoye la même réponse c'est que la valeur contenue dans le champ est mauvaise
(Pas le bon mot de passe quoi ...)
  • 403 Interdit : Le server ne veut pas afficher les infos concernant cette ressource .
  • 404 Non trouvé : Le server ne trouve pas la ressource demandée dans l'uri .


- Erreurs 5xx: Coté server
  • 500 Erreur interne : Le server à planté d'une erreur quelconque ...
  • 501 Non Implementé : Le server ne sait pas comment répondre à la requette .
  • 502 Erreur de routeur : C'est dans le cas où le server sert de routeur ou

de proxy , il à reçu une requette incorrecte .
  • 503 Service Indisponible : Le server ne pêut traiter la requette pour cause

de maintenance ou pour cause de surcharge de requettes .

Les Champs d'entête :
=-=-=-=-=-=-=-=-=-=-=

Légende :
  • Correspond à un champ envoyé par le client

+ Correspond à un champ envoyé par le server
- Correspond à un champ envoyé par le server ou le client

+ Allow : Sert au server de dire quelle genre de requette est supporté par l'url
qu'il appele :
Allow: GET, HEAD
  • Authorization : Aprés une réponse 401 du server , ce champ peut être envoyé

dans envoyé au server dans l'entete :
Authorization: données_identification

+ Content-Encoding : Donne le type d'encodage de l'information , si par exemple
se trouve sous une forme compresée , le client saura la decompresser lors de
son utilisation :
Ex : Content-Encoding: x-gzip
x-gzip
Un format de compression géré par le programme de compression "gzip" (GNU zip)
développé par Jean-Loup Gailly. Ce codage est de type Lempel-Ziv (LZ77) avec
CRC sur 32 bits.
x-compress
Un format de compression géré par le programme "compress" effectuant une compression
adaptative de type Lempel-Ziv-Welch (LZW).

- Content-Lenght : Il indique le nombre de caractéres qui sont en reponse , et dans le
cas d'une requette head , il indique la taille du document renvoyé .
Attention : Toute valeur supérieure ou inférieure indiquée en requette POST , envoyant les
informations variables , ne sera pas comprise par le server , et celui-ci vous renverra
une réponse invalide .
Elle est indispensable dans toutes les requettes POST contenant un corp de variables !

+ Content-Type : Elle indique le type de média envoyé au client .
Ex : Content-Type: text/html

+ Date : Ce champ indique la date exacte avant l'envoie du message , ce qui ensuite
peut permettre da calculer le temps de chargement .
Ex : Date: Tue, 15 Nov 1994 08:12:31 GMT
Syntaxe de Date :
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, mis à jour par la RFC 1123 : celui par défault
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsolète depuis la RFC 1036
Sun Nov 6 08:49:37 1994 ; Format asctime() du C ANSI

Si on ne met pas le format par défault , il faut en prévenir le client avec ce champ :
HTTP-date = rfc1123-date | rfc850-date | asctime-date

+ Expires : Ce champ indique la date et l'heure ou ce document devient obsoléte.
Exemple : Expires: Thu, 01 Dec 1994 16:00:00 GMT
NB : Avec ce champ on indique au client s'il doit ou non prendre en compte le message,
cependant on ne peut pas l'obliger à ce qu'il rafraichisse son cache .
  • From : Ce champ est un mouchard utilisé par certain navigateur qui indique l'adresse

mail du client , et qui peut être un outil de suivi pour les admin ... mais bon , il
est praticment pas utilisé ...
  • If-Modified-Since : Permet d'optimiser la navigation , car en effet , si le server n'a

pas modifié son document depuis , et que le client inclut ce champ , la conversation
se termine par un réponse type 304 (non modifié) .

+ Last-Modified : Indique la date de la derniére modification subie par le document ,
ainsi l'explorateur le charge en cache , et ainsi une fois l'uri redemandée , inclut
le champ If-Modified-Since dans la requette .

+ Location : Ce champ indique l'emplacement exact du document demandé . Il est utilisé
lors des changements de servers avec les reponses 3XX .

- Pragma : Il contient un peu n'importe quoi. Il est définit par les clients , en fonction
du protocole , bréf il peu changer en fonction de ce que le server et l'utilisateur ont
choisit comme protocole . Le plus souvent il contient la valeur no-cache, ce qui indique
au client que la page envoyée ne doit pas être enregistrée en cache .
  • Referer : Ce champ contient l'url de la page précédente , donc permet de savoir comment

l'utilisateur à accédé aux pages . Ce champ n'est pas écrit lorsque l'utilisateur
ecrit à la main l'adresse du site . Ceci permet de cibler les liens sur la toile et les
habitudes des clients , plus de prendre en compte les moteurs de recherches .

+ Server : Ceci permet à donner le nom du server et sa version , cependant le client
n'en prend pas compte . Il est fortement conséillé de ne pas donner ces indications
car en ayant le server et sa version on peut savoir si le server est sujets à certaines
failles , ou à été patché !
  • User-Agent : Il permet de renseigner le server sur le type d'OS que posséde le client

ainsi que sur le navigateur choisit , cependant c'est un mouchard servant à des buts
statistiques , puisque n'importe quel information peut être mise dedans .
  • WWW-Authenticate : Il contient l'authentification saisie par l'utilisateur quand une

réponse de server est 401 (non autorisé).

Source / Exemple :


' VBASE Server - Version BETA
' Il gére peu le protocole HTTP
' mais cela va changer avec la v1
' http://www.vbfrance.com/article.aspx?Val=5745 

' Si vous souhaitez approfondir vos recherches 
' j'ai joint aussi le zip avec le document officiel 
' traduit en français  ...

Conclusion :


Une derniére mise à jour est à prévoir , car je n'ait pas traité
la partie protection/sécurité qui ont étés prévus dans le HTTP .
J'essayerais de trouver un algorithme de cryptage des headers
WWW-Authetificate .

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Si klq1 à une remarque à faire , qu'il mette un commentaire , mais je trouve ça lache de mettre une mauvaise note et rien dire ... faut continuer dans la critique pour qu'au moins ce soit plus constructif ... à moins que la personne qui ait fait ça ne conaisse pas le sens du mot constructif ? Dois-je en compendre en tout cas que ça vous interresse pas ?
Tanpis , moi je l'ait pas pour me vanter , ni pour gagner de tunes , mais c pour vous , mais si ça vous interresse pas , je vois pas l'intéret de vous en expliquer d'avantage .
cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

Désolé , je retire tout ce que je viens de dire , enfaite il s'avére que toutes mes sources ont vu leur note se baisser , donc c un gars qui s'amuse à rabaisser mes notes...mais PS : C'est pas la note que tu me donnes qui définit mon niveau .

On à affaire avec de gros blaireaux des fois sur vbfrance, c dommage c polution !
lumesh
Messages postés
564
Date d'inscription
jeudi 21 février 2002
Statut
Membre
Dernière intervention
7 novembre 2008

Salut aKh,

Noter ce Tutoriel !! c vraiment extraordinaire, noter une source je suis OK mais aps ce tut !
la seule chose que l'on puisse faire c'est d'apporter de l'aide a aKh (si vraiment le contenu est trop pauvre, mais j'en doute ! ;) ) sur l'aprofondissement du tut si tes (celle de celui qui lira le message) connaissances le permettent mais en aucun droit de juger la quailité d1 tut venant de source apronfondit sur le sujt ! (pour ceux qui ne comprenne aps, je suis sur le chan #programmation le soir et je pourrais vous expliquer ..........).

De plus quelque chose encore PLUS extraordinaire c'est de poser un note de bas niveau sur ce tut (pr ceux qui veulent vraiment noter) sachant que toutes ces infos viennent dune doc serieuse !! mettre une faible note (cad critiquer) cela reviendrait a critiquer aussi la source de ces informations pourtant si veridique et logique !! (comment repondre PEUT ETRE alors que les choix n'impose que le OUI ou le NON ?). Pour le 'blaireau' qui fé mumuze je lui donne a reflexion !

Pour en revenir au sujet principal de cette source , aKh tu as fé du bon taf car avoir passer du temps pour nous expliquer plus clairement le protocole HTTP bah c super sympa de ta part !!!!
C'est vraiment domage que des couillon (excuZez moi du terme), viennent faire chier du monde qui sont la pr apprendre et faire EVOLUER DS LE SENS POSITIF leur simple connaissance !
Ce sont des gens comme toi, aKh qui rendent de tres grand services aux autres et a qui ont leur jette des pierres car la connerie humaine depasse parfois le respect d'autrui !

En tout cas moi, je te remerci pas mal vu que je ne connaissait q1 Chouillat le protocole HTTP !!!
Et aussi merci pour le partage de tes connaissances !
(je ne te note pas, tu doit savoir pourkoi ;))

Continu comme ca et oubli ces pollueurs ;) @+++ Lumesh.
(si aKh tu ne ma bien compris, ce qui est fort probable vu ma facon de m'exprimmer, mail moi ;))


PS: pr les pouilleux qui ne vont aps savoir faire autre chose que des remarque sur ma faconb d'ecrire et mes fôtes daurttografe , bah vous saveez ce ke je vous dit :) ........ inutile de settendre sur le sujet .........................
PS2: et pr ceux qui ne voient aucun rapport bah dsl , le 2eme message de aKh sur le blaireaux ki le fé chier ma porter sur les nerfs !! (les blaireaux en tt genre me tape sur le systeme !)
PS3: ouf vala d'etendu ;) dsl aKheNathOn d'avoir poluer un peu de ton espace :) :) :) :)
cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012

t'inquiet, au moins là je me sent soutenu , même si je sait qu'il y en à qui aiment ce que je fais , le fait de le dire ça m'encourage .

Quand à ce tutoriel , promis ce soir je le finit ;)
cs_Clem
Messages postés
282
Date d'inscription
dimanche 1 avril 2001
Statut
Membre
Dernière intervention
12 février 2007

Je suis tt a fait d'accord avec lumesh, akh se casse le cul a faire des bons trucs, tout ca pour que des c*** mettend des sales notes (c comme les profs...).
En plus, des tutoriels, c une bonne idée, c'est ce qui manque sur vbfr, moi je le trouve génial ce tut, car justement c ce que je cherchais depuis un petit moment.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.