Le protocole HTTP

Transcription

Le protocole HTTP
Généralités
Le protocole HTTP
❚
❚
❚
❚
Christophe Borelly
IUT Béziers, Dépt R&T
HTTP : Hypertext Transfer Protocol
Protocole utilisé pour le World Wide Web.
Port TCP 80 par défaut.
HTTP/1.1 (RFC 2616) - Juin 1999
❙ Peut utiliser la même connexion réseau pour plusieurs
requêtes/réponses.
❚ HTTP/1.0 (RFC 1945) -
© 2005
❙ Utilise une nouvelle connexion réseau à chaque
requête/réponse.
http://www.borelly.net
[email protected]
❚ HTTP/0.9 - 1990
22/11/06
[email protected]
Type MIME
Requête HTTP
❚ HTTP utilise la dénomination de format
défini pour Internet Mail (RFC 822)
❚ MIME : Multipurpose Internet Mail
Extensions (RFC 2045)
❚ Exemples : text/plain, text/html,
image/jpeg, image/png, x-application/pdf,
etc...
❚ Le client envoi une requête (qui contient une
méthode, un URI et une version de protocole) à
la quelle on peut ajouter des options.
❚ La fin de la requête est une ligne CR LF (0x0D
0x0A).
22/11/06
22/11/06
[email protected]
3
Méthodes possibles
❚
❚
❚
❚
❚
❚
❚
❚
GET /pub/WWW/TheProject.html HTTP/1.1<CRLF>
Host: www.w3.org<CRLF>
<CRLF>
❚
❚
❚
❚
❚
❚
❚
❚
❚
[email protected]
[email protected]
4
Options de requête
OPTIONS
GET
HEAD
POST
PUT
DELETE
TRACE
CONNECT
22/11/06
2
5
Accept
Accept-Charset
Accept-Encoding
Accept-Language
Authorization
Expect
From
Host
If-Match
22/11/06
❚
❚
❚
❚
❚
❚
❚
❚
❚
❚
If-Modified-Since
If-None-Match
If-Range
If-Unmodified-Since
Max-Forwards
Proxy-Authorization
Range
Referer
TE
User-Agent
[email protected]
6
Réponse HTTP
Codes d’erreur
❚ Le serveur répond par une ligne de statut (qui
contient la version du protocole et le code
d’erreur) suivie par les options du serveur.
❚ La fin de la réponse est une ligne CR LF (0x0D
0x0A).
❚ Le code d’erreur est un nombre de 3 digits avec
5 catégories :
HTTP/1.1 200 OK<CRLF>
Date: Fri, 23 Sep 2005 14:51:30 GMT<CRLF>
Server: Apache/2.0.52 (Win32) mod_ssl/2.0.52 OpenSSL/0.9.7c
PHP/5.0.2<CRLF>
Content-Length: 376<CRLF>
Content-Type: text/html; charset=ISO-8859-1<CRLF>
Content-Language: fr<CRLF>
<CRLF>
...
22/11/06
[email protected]
❙ 1xx : Information, requête reçue en cours de traitement.
❙ 2xx : Succès, requête reçue, comprise et acceptée.
❙ 3xx : Redirection, une action supplémentaire est
nécessaire pour traiter la requête.
❙ 4xx : Erreur du client, mauvaise syntaxe ou requête
interrompue.
❙ 5xx : Erreur du serveur sur une requête qui semble
valide.
7
Codes d’erreur (1)
❚
❚
❚
❚
❚
❚
❚
❚
❚
100
101
200
201
202
203
204
205
206
:
:
:
:
:
:
:
:
:
22/11/06
❚
❚
❚
❚
❚
❚
❚
9
Codes d’erreur (3)
❚
❚
❚
❚
❚
❚
❚
❚
❚
❚
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
22/11/06
8
300:
301:
302:
303:
304:
305:
307:
22/11/06
Multiple Choices
Moved Permanently
Found
See Other
Not Modified
Use Proxy
Temporary Redirect
[email protected]
10
Codes d’erreur (4)
Bad Request
Unauthorized
Payment Required
Forbidden
Not Found
Method Not Allowed
Not Acceptable
Proxy Authentication Required
Request Time-out
Conflict
[email protected]
[email protected]
Codes d’erreur (2)
Continue
Switching Protocols
OK
Created
Accepted
Non-Authoritative Information
No Content
Reset Content
Partial Content
[email protected]
22/11/06
❚
❚
❚
❚
❚
❚
❚
❚
11
410:
411:
412:
413:
414:
415:
416:
417:
22/11/06
Gone
Length Required
Precondition Failed
Request Entity Too Large
Request-URI Too Large
Unsupported Media Type
Requested range not satisfiable
Expectation Failed
[email protected]
12
Codes d’erreur (5)
❚
❚
❚
❚
❚
❚
500:
501:
502:
503:
504:
505:
Options de réponse
Internal Server Error
Not Implemented
Bad Gateway
Service Unavailable
Gateway Time-out
HTTP Version not supported
22/11/06
[email protected]
❚
❚
❚
❚
❚
❚
❚
❚
❚
13
Options spécifiques à un
contenu
❚
❚
❚
❚
❚
❚
❚
❚
❚
❚
22/11/06
[email protected]
14
Références
Allow
Content-Encoding
Content-Language
Content-Length
Content-Location
Content-MD5
Content-Range
Content-Type
Expires
Last-Modified
22/11/06
Accept-Ranges
Age
ETag
Location
Proxy-Authenticate
Retry-After
Server
Vary
WWW-Authenticate
❚ Site Web :
❙ http://www.faqs.org/
[email protected]
15
22/11/06
[email protected]
16