HTTP

Document Sample
HTTP Powered By Docstoc
					                    Le protocole HTTP
        HTTP (Hyper Text Transfer Protocol) est un
         protocole de transfert de données hypermédia sur
         Internet.

        Le World-Wide Web (WWW) fait référence à un
         réseau de serveurs qui communiquent par HTTP.

        HTTP utilise le modèle client-serveur sur TCP:
          – Le serveur Web (Appache, Netscape, IIS, …)
          – Le client est un naviagateur (IE, Netscape, …)

A. Obaid © - Développement d'applications (INF4482)
                        Modèle du web

                Page courante                                       Serveur: abc.zzz.uk
                                 Serveur: www.xyx.com
    Client      affichée

      xxxx        Hyperlien                                               xxxx
                                     xxxx
      xxxx                                              Hyperlien         xxxx
                                     xxxx




                  HTTP sur TCP                            HTTP sur TCP


     Internet



A. Obaid © - Développement d'applications (INF4482)                                       HTTP 2
                 Avantages de HTTP
        Permet la négociation des types de données.

        Permet de servir des documents de plusieurs
         types: texte (HTML,XML,…), image (JPEG,
         GIF, …), combiné (multimédia),…


        Extensible avec l'emploi d'en-têtes.



A. Obaid © - Développement d'applications (INF4482)    HTTP 3
                 Avantages de HTTP
        Sans état (stateless). Donc léger.
          – Quelques fois c'est un inconvenient !
        Ses requêtes et réponses sont en ASCII.
        Sécuritaire avec SSL.
        N'est (généralement) pas filtré par les fire-walls.




A. Obaid © - Développement d'applications (INF4482)       HTTP 4
                       Échanges HTTP
        Les étapes d’une requête sont:
          –   Le client effectue une connexion TCP sur le port 80.
          –   Le client émet la requête.
          –   Le serveur envoie le document de réponse.
          –   Le serveur coupe la connexion.


        Certains serveurs permettent de garder la
         connexion ouverte pour plusieurs requêtes
         (Option Keep alive )

A. Obaid © - Développement d'applications (INF4482)
                      Requêtes HTTP
        Un requête consiste en:
          – Une ligne de commande contenant le nom de la
            commande (GET, POST, HEAD, …), l'URL demandé
            et la version de HTTP utilisée.
                 Exemple: GET /doucment.html HTTP/1.1
          – Des lignes d'en-têtes (optionnelles)
          – Une ligne vide
          – Le corps de la requête (optionnel)




A. Obaid © - Développement d'applications (INF4482)
                      Réponses HTTP
        La réponse de HTTP consiste en:
          – Une ligne de code de la réponse contentant la version
            de HTTP utilisée, un code et une texte explicatif
                 Exemple: HTTP/1.0 200 OK
          – Des lignes d'en-têtes
          – Une ligne vide
          – Le corps de la réponse: document de type texte
            (HTML,XML,…), image (JPEG, GIF, …), combiné
            (multimédia),…



A. Obaid © - Développement d'applications (INF4482)
                                Les URL
        Un URL (Uniform Resource Locator) est un
         Mécanisme d'identification des ressources sur le
         Web:
                   service://NomDeDomaine:[port]/ressource

        La ressource peut être:
          – Un document (texte, image,…)
          – Un exécutable (binaire, Perl, Python, …)
          – Un objet (servlet, bean, ….)

        Le service peut être HTTP, FTP, TELNET, SMTP, …

A. Obaid © - Développement d'applications (INF4482)          HTTP 8
             Méthodes d’une requête
        POST
          – Puisque les paramètres sont à l’intérieur du corps
            de message, pour être enregistré comme favoris,
            le fureteur doit enregistrer l’URI et le corps de
            message
          – Puisque souvent on demande le POST pour
            produire des évènements irréversibles sur le
            serveur, le fureteur doit demander à l’usager s’il
            désire renvoyer la demande. Si l’utilisateur
            répond ok, alors le fureteur renvoie la requête.


A. Obaid © - Développement d'applications (INF4482)              HTTP 9
             Méthodes d’une requête
        OPTIONS
          – Utilisé pour obtenir les options du serveur
        HEAD
          – Utilisé pour avoir une réponse avec toutes les
            entêtes qui vont être générés par la requête GET.
          – Peut-être utilisé pour s’assurer qu’un lien est
            valide,…




A. Obaid © - Développement d'applications (INF4482)             HTTP 10
                 Autres méthodes HTTP
        PUT
          – Pour enregistrer le corps du message comme un
            URI
        DELETE
          – Pour supprimer une ressource identifiée par l’URI
        TRACE
          – Pour tester la communication entre le client et le
            serveur.
          – Le serveur renvoie la requête, exactement comme
            il l’a reçu, dans le corps de la réponse.




A. Obaid © - Développement d'applications (INF4482)              HTTP 11
                       Gestion de l’état
        HTTP est un protocole sans état (stateless)

        Problème lors d’utilisation d’applications WEB
         qui nécessitent plusieurs requêtes pour
         compléter une transaction.




A. Obaid © - Développement d'applications (INF4482)       HTTP 12
                    Simulation des états
          Lors d’une requête, le serveur renvoie avec
           la réponse l’état de la transaction que le
           client devra renvoyer lors de la prochaine
           requête.
          Le serveur utilise une façon d’enregistrer
           l’état et d’utiliser un identifiant qu’il retourne
           au client. Cet identifiant sera retourné par
           le client lors de la prochaine requête.



A. Obaid © - Développement d'applications (INF4482)             HTTP 13
                    Simulation des états
        Utilisation d’un cookie.
        Encapsuler un champ caché (Hidden) dans
         un document HTML
        Encoder l’URI dans le corps de la réponse,
         typiquement un lien sur une autre page de
         l’application:
          – URL rewriting




A. Obaid © - Développement d'applications (INF4482)   HTTP 14
                                  Cookie
        Paire de nom=valeur passé du serveur au
         fureteur dans l’entête de la réponse
        Lorsque le fureteur envoie une requête, il
         inclut tous les cookies non expirés reçus du
         même serveur à l’intérieur de la requête.
        Problèemes :
          – Certains fureteurs ne supportent pas les cookies
          – Le client peut désactiver les cookies



A. Obaid © - Développement d'applications (INF4482)            HTTP 15
                       Champs cachés
        Le serveur envoie un champs caché avec un
         contenu au fureteur contenant l’état de la
         transaction.

        Le fureteur utilise ce champ comme un
         champ ordinaire et le renvoie avec la
         prochaine requête lors de la soumission d’un
         formulaire.



A. Obaid © - Développement d'applications (INF4482)     HTTP 16
                       Session tracking
        Envoyer toutes l’information sur l’état de la
         session entre le client et le serveur n’est pas
         efficace.

        Les serveurs modernes utilisent le principe
         de garder l’information sur le serveur, et de
         passer au client seulement l’identifiant de
         l’état.



A. Obaid © - Développement d'applications (INF4482)        HTTP 17
                       Session tracking
        Toutes les requêtes qui possèdent le même
         identifiant de session (Session ID)
         appartiennent à la même session.

        Le serveur peut alors garder la trace de la
         session




A. Obaid © - Développement d'applications (INF4482)    HTTP 18
             Les codes des réponses
        Information :
          – 100 Continue : Le serveur accepte de traiter la
            requête et le client doit continuer.
          – 101 Changement de protocole : Le serveur doit
            continuer avec une autre version de HTTP.
        Succès :
          – 200 OK : La requête a bien été exécutée.
          – 201 Créée : La ressource demandée a été créée.
          – 202 Accepté : Traitement demandé en cours
            d’exécution.
          – ..

A. Obaid © - Développement d'applications (INF4482)           HTTP 19
             Les codes des réponses
        Redirection :
          – 300 Choix multiples : La ressource possède
            plusieurs emplacements. Le client doit choisir.
          – 301 Ressource déplacée : La ressource a changé
            de place.
          – 304 Non modifié : La ressource demandée n’a
            pas été modifiée depuis la dernière requête.




A. Obaid © - Développement d'applications (INF4482)           HTTP 20
             Les codes des réponses
       Mauvaise requête :
        – 401 Accès non autorisé: Le client doit être authentifié.
        – 403 Interdit: Le serveur refuse d’exécuter la requête.
        – 404 Non trouvé: Ressource non trouvée..
        – 405 Méthode non autorisée.
        – 408 Timeout dans la requête : Le client doit répéter sa
          requête.
        – 410 Parti : La ressource demandée n’est plus
          disponible.



A. Obaid © - Développement d'applications (INF4482)           HTTP 21
               Exemples de requêtes
              GET http://www.info.uqam.ca/Programmation/tcpip.html HTTP/1.1
                      <Ligne Vide>

URL relatif   GET Programmation/tcpip.html HTTP/1.1
              <Ligne Vide>

              GET Programmation/traitement?Par1&Par2 HTTP/1.1
                     <Ligne Vide>



              POST Programmation/traitement HTTP/1.1
                    <Ligne Vide>
              …     Données …



A. Obaid © - Développement d'applications (INF4482)                      HTTP 22
           Manipulation des cookies-
                   Exemple
      GET cgi-bin/ProgrammeCookie HTTP/1.0



      HTTP/1.1 200 OK
      Date: Thu, 01 May 2003 00:07:30 GMT
      Server: Apache/1.3.0 (Unix)
      Set-Cookie: Nom=OBAID; path=/; expires=Thursday, 20-Nov-03 14:00:00 GMT
      Connection: close
      Content-Type: text/plain
      ….

      GET /index.html HTTP/1.0
      Cookie: Nom=OBAID




A. Obaid © - Développement d'applications (INF4482)                         HTTP 23
                   Codages des URLs
        Les caractères spéciaux dans un URL
         doivent être codés selon un codage (URL
         Encoding) :
          – Liste d’éléments: séparés par &.
          – Espaces: remplacés par +.
          – Tout autre symbole: remplacé par son code ASCII
            en héxadécimal:
                 Exemple: Montréal/Jazz est codé Montr%E9al%2FJazz




A. Obaid © - Développement d'applications (INF4482)                   HTTP 24
                            Les en-têtes
        Ils accompagnent les requêtes pour les réponses.

        Enrichissent les échanges HTTP

        Permettent de négocier certains paramètres de la
         communication.




A. Obaid © - Développement d'applications (INF4482)   HTTP 25
              Les en-têtes de requête
        HTTP-Version: Version de HTTP utilisée.
        Accept: Le client indique les types de documents
         qu’il accepte.
        Accept-Charset: Le client précise les jeux de
         caractères qu’il accepte (ISO-8859-1,…).
        If-Modified-Since: Utilisé par le client pour obtenir un
         document s’il a été récemment modifié. Utilisé par
         l'opération Reload.
        Connection: Permet de spécifier certains paramètres
         de connexion (ex. Keep-Alive). Non disponible partout.


A. Obaid © - Développement d'applications (INF4482)
              Les en-têtes de requête
        Autorization : Le client soumet des paramètres pour
         une autorisation d’accès.
        Host : Adresse du serveur .
        Cookie : Permet au client de présenter une cookie.
        Referer : URL de la page origine de la requête.
        User-Agent : Informations sur le navigateur.




A. Obaid © - Développement d'applications (INF4482)        HTTP 27
             Les en-têtes de réponse
        Content-Encoding : Type de codage du contenu
         (ie. compression).
        Content-Length : La longueur en octets des
         données de la réponse.
        Content-Type : Type (MIME) du contenu de la
         réponse.
        Expires: Date de validité d’un document. Utilisé
         pour la gestion des mémoires cache.




A. Obaid © - Développement d'applications (INF4482)         HTTP 28
             Les en-têtes de réponse
        Location : Permet au serveur de demander au client
         de rediriger sa requête ailleurs.
        Server : Informations sur le logiciel serveur utilisé.
        Set-Cookie : Permet au serveur de fournir une cookie
         au client.




A. Obaid © - Développement d'applications (INF4482)           HTTP 29
        Exemples d'échanges HTTP
    Page :

    <a HREF="http://www.info.uqam.ca/Test/texte.html"> Obtenir le texte </a>

    GET Test/texte.html HTTP/1.0
    Accept: text/plain , image/*
    If-Modified-Since: Wed, 10 Sep 2003 14:20:21 GMT
    Referer: http://www.info.uqa.ca/index.html
    User-Agent: Mozilla/2.0
               Ligne vide                                                 Réponse
    Requête                              HTTP/1.0 200 OK
                                         Date: Wed, 10 Sep 2003 14:20:21 GMT
                                         Server: NCSA/1.5.2
                                         Mime-Vesion: 1.0
                                         Content-Type: text/html
                                         Last-Modified: Wed, 10 Sep 1998 14:20:23 GMT
                                         Content-Length: 139
                                                  Ligne vide
                                         <html> ……</html>


A. Obaid © - Développement d'applications (INF4482)                              HTTP 30
        Exemples d'échanges HTTP

      HEAD Test/texte.html HTTP/1.0
      User-Agent: Mozilla/2.0
      From: obaid.abdel@uqam.ca
               Ligne blanche                                            Réponse
       Requête                          HTTP/1.0 200 OK
                                        Date: Wed, 10 Sep 2003 14:20:21 GMT
                                        Server: NCSA/1.5.2
                                        Mime-Vesion: 1.0
                                        Content-Type: text/html
                                        Last-Modified: Wed, 10 Sep 1998 14:20:23 GMT




A. Obaid © - Développement d'applications (INF4482)                             HTTP 31
          Requêtes avec paramètres
        Méthode GET :
             http://www.info.uqam.ca/cgi/recherche?item1+item2+item3

               GET cgi/recherche?item1+item2+item3 HTTP/1.0
               Accept: */*
               Accept-language: en, fc
               User-Agent: Mozilla/2.0
               Host: saturne.info.uqam.ca
                         Ligne blanche

        Méthode GET à partir d'un formulaire :
             http://www.info.uqam.ca/cgi/saisie?champ1=Val1&champ2=Val2
                GET /cgi/saisie?champ1=Val1&champ2=Val2
                Accept: */*
                Accept-language: en, fc
                User-Agent: Mozilla/2.0
                Host: saturne.info.uqam.ca
                          Ligne blanche


A. Obaid © - Développement d'applications (INF4482)                HTTP 32
          Requêtes avec paramètres
                Méthode POST à partir d'un formulaire avec:
                      • http://www.info.uqam.ca/cgi/saisie
                      • champ1=Abdel Obaid et champ2=514-9873000

              POST /cgi/saisie
              Accept: */*
              User-Agent: Mozilla/2.0
              Host: saturne.info.uqam.ca
              Content-type: multipart/form-data; boundary=-----------------404040878888
              Content-Length: 112
                            Ligne vide
              -----------------404040878888
              Content-Disposition: form-data; name="Champ1"
                            Ligne vide
              Abdel+Obaid
              -----------------404040878888
              Content-Disposition: form-data; name="Champ2"
                            Ligne vide
              514-9873000
              -----------------404040878888


A. Obaid © - Développement d'applications (INF4482)                                       HTTP 33
           Utilisation des formulaires
        Les formulaires sont définis avec la balise:

            <FORM NAME="nom" ACTION="URL" METHOD="Méthode">
                 ....
            </FORM>

            URL désigne le programme qui va traiter les données
            du formulaire. Méthode est GET (défault) ou POST.

        Les données du formulaire sont traitées par une
         ressource externe au serveur (ex. CGI, Servlet)

A. Obaid © - Développement d'applications (INF4482)         HTTP 34
            Méthodes GET vs POST
        GET
          – Demande une ressource en passant les
            paramètres dans l’URI
          – Utilisée pour retrouver une ressource ou quand
            peu de données sont a soumettre au serveur
        POST
          – Demande une ressource en passant les
            paramètres à l’intérieur du corps de message
          – Souvent utilisé lorsqu'on soumet beaucoup de
            données au serveur
                 Exemple: Contenu d'un gros formulaire



A. Obaid © - Développement d'applications (INF4482)          HTTP 35
            Méthodes GET vs POST
        GET :
          – Le fureteur peut ajouter l’URI dans ses favoris, encodé dans
            un hyperlien et la réponse peut être mise en cache.
          – On peut facilement demander un rafraîchissement de la
            page ou revenir par le bouton « back »
        POST
          – Puisque les paramètres sont dans le corps de
            message, le fureteur doit enregistrer l’URI et le
            corps de message
          – Puisque souvent on demande le POST pour
            produire des évènements irréversibles sur le
            serveur, le fureteur doit demander à l’usager s’il
            désire renvoyer la demande. Si l’utilisateur
            répond ok, alors le fureteur renvoie la requête
A. Obaid © - Développement d'applications (INF4482)                        HTTP 36
                      Modèle avec CGI
                                                      QUERY_STRING
                                                                        Variables
 Navigateur                HTTPD                      CONTENT_TYPE
                                                      REMOTE_ADDR       d ’environnment
                                                           ...




                                                        CGI                  Programme/
                                                                             Script



                                                              stdin/stdout




A. Obaid © - Développement d'applications (INF4482)                                HTTP 37
                                 Les CGI
            Communication par variables
             d'environnement
            Simples à mettre en œuvre
            Usage de plusieurs langages:
             – Binaires, Shell, Perl, Python, PHP...




A. Obaid © - Développement d'applications (INF4482)    HTTP 38
                      Variables de CGI
        AUTH_TYPE                              SCRIPT_NAME
        CONTENT_LENGTH                         SERVER_NAME
        CONTENT_TYPE                           SERVER_PORT
        DOCUMENT_ROOT                          SERVER_PROTOCOL
        PATH_INFO                              SERVER_SOFTWARE
        PATH_TRANSLATED                        …
        QUERY_STRING
        REMOTE_ADDR
        REMOTE_HOST
        REMOTE_USER
        REQUEST_METHOD



A. Obaid © - Développement d'applications (INF4482)                HTTP 39
             Fonctionnement du CGI
       Browser                                             Serveur


 Submit                 Post

                                       Write environnement

                                                                 Execute


                                                                        Programme
                                                            Read environnement

                                          Standart Input

                                         Standart output
                    Page HTML




A. Obaid © - Développement d'applications (INF4482)                                 HTTP 40
              Problèmes avec les CGI
        Pour chacune des requêtes reçues le serveur
         WEB doit :
          –   Créer un nouveau processus
          –   Charger et interpréter un script
          –   Exécuter le script
          –   Fermer le processus et fermer le tout.
        Devient un problème quand le trafic est
         important



A. Obaid © - Développement d'applications (INF4482)    HTTP 41
                 Alternatives aux CGI
        FastCGI, mod_perl de Apache
        NSAPI de Netscape
        ISAPI de Microsoft
        Java Servlet de Sun Microsystème

        Ces solutions offrent une meilleure performance
         mais un problème persiste :
          – Le HTML est crée dans le programme (traitement)


A. Obaid © - Développement d'applications (INF4482)       HTTP 42

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:2
posted:12/8/2012
language:
pages:42