HTTP 1.1. HyperText Transfer Protocol ... ... TCP IP ...



Documents pareils
L3 informatique TP n o 2 : Les applications réseau

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

(structure des entêtes)

Web Tier : déploiement de servlets

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Introduction à HTTP. Chapitre HTTP 0.9

Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

Serveurs de noms Protocoles HTTP et FTP

INF8007 Langages de script

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

Dans l'épisode précédent

Application Web et J2EE

Protocoles Applicatifs

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

«Cachez-moi cette page!»

Architecture Orientée Service, JSON et API REST

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

Le développement d applications Web

Applications et Services WEB: Architecture REST

Développement des Systèmes d Information

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Zoom sur Newtest LDAP intégration

JavaServer Pages (JSP)

18 TCP Les protocoles de domaines d applications

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Le serveur HTTPd WASD. Jean-François Piéronne

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Manuel d'installation

Cours CCNA 1. Exercices

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Réseaux. 1 Généralités. E. Jeandel

Internet. Web Sécurité Optimisation

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Stockage du fichier dans une table mysql:

Mac OS X Server Administration des technologies Web. Pour la version 10.3 ou ultérieure

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : et un masque

Les services usuels de l Internet

WebSSO, synchronisation et contrôle des accès via LDAP

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Présentation du relais HTTP Open Source Vulture. Arnaud Desmons Jérémie Jourdin

Proxies,, Caches & CDNs

Sécurité des applications Web

Protection des protocoles

Présentation Internet

SERVEUR HTTP Administration d apache

Hébergement de site web Damien Nouvel

Les cahiers pratiques de Anonymat.org. SocksCap32. Edition du 20 Octobre 2000

Développement Web. Les protocoles

Module http MMS AllMySMS.com Manuel d intégration

Mise en œuvre des serveurs d application

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Chapitre : Les Protocoles

Content Switch ou routage de niveau HTTP

Introduction à l'internet et ces Protocoles

L identité numérique. Risques, protection

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

1. Mise en œuvre du Cegid Web Access Server en https

Couche application 1

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Guide Numériser vers FTP

Les serveurs. UE 103b. Guillaume Burel.

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Guide de connexion Wi-Fi sur un hotspot ADP Télécom

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Sécuriser les applications web de l entreprise

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Etude et développement d un moteur de recherche

Traitement des données de formulaires. Accès aux BD avec JDBC Servlets - M. Baron - Page

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Outils de l Internet

ADF Reverse Proxy. Thierry DOSTES

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Programmation Web. Madalina Croitoru IUT Montpellier

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

API ONE-TIME PASSWORD

Réseaux et protocoles Damien Nouvel

Introduction à Sign&go Guide d architecture

ECOLE POLYTECHNIQUE DSI. Utilisation des serveurs mandataires («proxy») avec les protocoles d usage courant

GUIDE D UTILISATION ADSL ASSISTANCE

eps Network Services Alarmes IHM

Table des matières Hakim Benameurlaine 1

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

TUTORIAL ULTRAVNC (EDITION 2)

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

CHAPITRE 11. Temps réel Remy Sharp

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Tests de montée en charge avec Tsung

Transcription:

HTTP 1.1 Place de http dans le modèle osi : HyperText Transfer Protocol...... TCP IP...... HTTP est un protocole «sans état» : chaque page WEB est transmise dans une connexion séparée (sauf pour les connections persistantes). Benoît Charroux - http 1.1 - janvier 2001-2

Gestion de la requête du client Le format d une requête d un client : Les requêtes HTTP commande HTTP (GET, POST, HEAD, ) adresse du document : URL version du protocole En-têtes Ligne vide Données éventuelles (commande POST) GET /index.html HTTP/1.0 User-Agent: Mozilla/4.0 (Compatible; MSIE 4.0; Windows 95) Accept: image/gif, image/jpeg, text/*, */* Benoît Charroux - http 1.1 - janvier 2001-4

Les commandes (méthodes) GET : permet d obtenir des informations (document, graphique, le résultat d une requête dans une base de données, ) ; peut envoyer des informations dans l URL limités en taille à 240 caractères sur certains serveurs (données d un formulaire simple) ; POST permet de poster des informations (une données graphique, des données pour une base de données, ) en quantité illimité ; HEAD pour demander les en-têtes de la réponse seulement pour récupérer la taille des documents, l heure de modification, PUT et DELETE sont faîtes pour agir sur les documents du serveur (elles ne sont pas largement supportées à cause des problèmes de sécurité ; TRACE retourne le contenu exact de la demande (utilisée pour le débogage) ; OPTIONS pour demander au serveur les méthodes et les options qu il supporte. Benoît Charroux - http 1.1 - janvier 2001-5 Les en-têtes HTTP 1/4 Les en-têtes apportent des informations sur ce que sait faire un navigateur ; les en-têtes http sont différentes des données d un formulaire (envoyées dans l URL pour les requêtes GET ou sur une ligne séparée pour les requêtes POST) ; les en-têtes http sont envoyées par le navigateur immédiatement après les requêtes GET ou POST ; exemples d en-têtes : Accept (types Multipurpose Internet Mail Extension que le navigateur sait gérer) ; Connection (connection http persistante). Benoît Charroux - http 1.1 - janvier 2001-6

Les en-têtes HTTP 2/4 Accept : type MIME qu un client sait gérer (application/pdf, image/jpeg, ) ; Accept-Charset : jeu de caractères (ISO-8859-1, ) ; Accept-Encoding : type de compression qui peut être décodée (gzip, compress, ) ; Accept-Langage : fr par exemple ; Authorization : accéder à des pages WEB protégés par mot de passe ; Cache-Control : Connection : gestion des connexions http persistantes pour récupérer un fichier HTML et plusieurs pages associées en une seule connexion de socket (option par défaut) ; Content-Length : taille des données d une requête POST en octets (voir getcontentlength) ; Content-type : utilisée par un client quand un document est attaché à POST ; Cookie : pour renvoyer au serveur un cookie qu il a envoyé ; Benoît Charroux - http 1.1 - janvier 2001-7 Les en-têtes HTTP 3/4 Expect : demande d acquittement au serveur d un document attaché ; From : adresse e-mail de la personne responsable de la requête (pas envoyée par les navigateurs mais par les robots de recherche sur le WEB) ; Host : nom d hôte en numéro de port du client ; If-Match et If-None-Match : If-Modified-Since : la page sera transmise au client uniquement si elle a été modifiée après une date spécifiée (elle pourra ainsi être mis en mémoire cache par le navigateur) (voir getlastmodified), il existe aussi If-Unmodified-Since ; If-Range et Range : Pragma : un servlet servant de serveur proxy doit transmettre la requête même s il dispose d une copie locale ; Proxy-Authorization : authentifie un client auprès d un serveur proxy ; Benoît Charroux - http 1.1 - janvier 2001-8

Les en-têtes HTTP 4/4 Referer : indique l URL de la page WEB à partir de laquelle la requête a été émise (peut être facilement maquillée) ; Upgrade : spécifie un protocole autre que HTTP 1.1 ; User-Agent : identifie le navigateur ou le client ; Via : défini par les passerelles et les serveurs proxy par lesquels la requête passe ;... Benoît Charroux - http 1.1 - janvier 2001-9 Lire les en-têtes HTTP avec une servlet

HttpServletRequest Lire les en-têtes HTTP 1/2 String getheaderparameter( String nomentete ) getcookies getauthtype et getremoteuser getcontentlength getcontenttype long getdateheader( String nom ) int getintheader( String nom ) Enumeration getheadernames() int getheader( String nom ) Enumeration getheaders( String nom ) Récupère le contenu d une en-tête (Connection par exemple) si elle est présente dans le requête. A utiliser avec les méthodes qui retourne une date comme If-Modified-Since pour convertir en un long. Retourne la valeur d un entête comme un int. Retourne la valeur d un en-tête. Retourne les valeurs des en-têtes qui peuvent apparaître plusieurs fois comme Accept-Langage. Benoît Charroux - http 1.1 - janvier 2001-11 Lire les en-têtes HTTP 2/2 HttpServletRequest String getmethod() String getrequesturi() Retourne la méthode principale de la requête (GET, POST, HEAD, PUT ou DELETE). Retourne la partie de l URL située après l hôte et le port mais avant les données du formulaire. Benoît Charroux - http 1.1 - janvier 2001-12

Exemple : lire toutes les en-têtes HTTP 1/2 public class EnTeteHTTP extends HttpServlet{ } public void doget( HttpServletRequest requete, HttpServletResponse reponse ) throws...{ reponse.setcontenttype( "text/html" ) ; PrintWriter out = reponse.getwriter() ; String entete ; for( Enumeration entetes = requete. ; entetes.hasmoreelements(); ){ entete = (String)enTetes.nextElement() ; out.println( entete + "=" + requete. (entete) + "<BR>" ) ; } } public void dopost( HttpServletRequest requete, HttpServletResponse reponse ) throws...{ doget( requete, reponse ) ; } Benoît Charroux - http 1.1 - janvier 2001-13 Exemple : lire toutes les en-têtes HTTP 2/2 Résultats fournis par la servlet précédente : accept=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* accept-charset=iso-8859-1,*,utf-8 accept-encoding=gzip host=pc-charroux accept-language=fr connection=keep-alive user-agent=mozilla/4.7 [fr] (WinNT; I) Benoît Charroux - http 1.1 - janvier 2001-14

Génération de la réponse du serveur Le format de la réponse d un serveur La réponse d un serveur est composée : d une ligne d état ; des en-têtes de réponse ; Code d état. d une ligne vide ; du document. Exemple : HTTP/1.1 200 OK Content-Type: text/plain Message associé. En-tête de réponse (Contetnt- Type est la seule obligatoire, sinon elles peuvent apparaître dans n importe quel ordre). Coucou! Il n y a pas toujours un document (réponse aux requêtes HEAD par exemple, ou cas des erreurs). Benoît Charroux - http 1.1 - janvier 2001-16

Les codes d états Les codes d état sont classés en 5 catégories : 100 à 199 : le client doit répondre avec une autre action ; 200 à 299 : la requête à réussi ; 300 à 399 : fichiers déplacés ayant une en-tête Location précisant leurs nouvelles adresses ; 400 à 499 : erreur au niveau du client ; 500 à 599 : erreur au niveau du serveur ; Benoît Charroux - http 1.1 - janvier 2001-17 Exemples de codes d états 200 (OK) : code envoyé par défaut (si on n utilise pas setstatus) ; 204 (No Content) : demande au navigateur de continuer d afficher le document précédant car aucun nouveau documents n est disponible ; 205 (Reset Content) : il n y a pas de nouveau document mais le navigateur doit remettre à jour l affichage du document (utilisé pour effacer les champs des formulaires) ; 302 (Found) : le document demandé se trouve ailleurs ; possibilité de rediriger automatiquement un navigateur sur une URL (méthode sendredirect de HttpServletResponse) ; 400 (Bad Request) : erreur de syntaxe dans le requête du client ; 404 (Not Found) : aucune ressource n est présente à l adresse demandée par le client (méthode senderror de HttpServletResponse) ; 500 (Internal Server Error) : souvent du à des programmes CGI ou des servlets en erreur qui envoient des en-têtes de format incorrecte. Benoît Charroux - http 1.1 - janvier 2001-18

Spécifier un code d état dans une servlet HttpServletResponse SC_NO_CONTENT SC_NOT_FOUND... setstatus( int codeetat ) senderror( int status ) sendredirect( String URL ) Spécifier un code d état Constante à utiliser comme code d état. Spécifier le code d état à envoyer (appeler avant d utiliser un PrintWriter pour envoyer l en-tête et le document). Spécifier un code d état à envoyer accompagné d un message formaté dans un document HTML public class Redirection extends HttpServlet{ public void doget( HttpServletRequest requete, HttpServletResponse reponse ) throws...{ reponse.setcontenttype( "text/html" ) ; PrintWriter out = reponse.getwriter() ; } } Benoît Charroux - http 1.1 - janvier 2001-20

Quelques en-têtes de réponse HTTP 1.1 (1/4) Vérifier quel protocole supporte le client avec getrequestprotocol avant d utiliser les nouvelles en-têtes de HTTP 1.1 ; Cache-Control (HTTP1.1) : indique si le document envoyé peut être mis en mémoire chache chez le client, les valeurs possible concernant le document envoyé sont : public : peut être mis en mémoire ; private : ne peut être socké que dans une mémoire tampon privée ; no-chache : ne doit jamais être mis en mémoire tampon (normalement les navigateurs ne mettent pas en mémoire tampon les documents dont un formulaire est à l origine) ; no-store : ne doit pas être mis en mémoire tampon, ;... Benoît Charroux - http 1.1 - janvier 2001-21 Quelques en-têtes de réponse HTTP 1.1 (2/4) Connection (valeur close) : demande au navigateur de ne pas utiliser les connexions HTTP persistantes (choisies par défaut avec HTTP1.1 si l en-tête Content-Length est présente dans le réponse) ; Content-Length (nécessaire uniquement pour les connexion persistante) : nombre d octets de la réponse ; Content-Location (HTTP1.1) : fournit une autre adresse pour le document demandé ; Content-Type (type MIME, voir méthode setcontenttype) : les types MIME sont de la forme type-principal/sous-type (un x dans le sous-type indique un type non officiel): application/msword ; application/octet-stream (données binaires ou inconnues) ; application/pdf ; application/x-gzip ; Benoît Charroux - http 1.1 - janvier 2001-22

suite des types MIME : Quelques en-têtes de réponse HTTP 1.1 (3/4) application/x-java-archive (fichier JAR) ; application/x-java-serialized-object ; application/x-java-vm (fichier.class Java) ; audio/midi ; text/html ; text/plain (text brut) ; image/jpeg ; video/mpeg ; Expires (voir setdateheader) : heure à laquelle le document ne doit plus être conservé en mémoire tampon ; Benoît Charroux - http 1.1 - janvier 2001-23 Quelques en-têtes de réponse HTTP 1.1 (4/4) Expires (voir setdateheader) : heure à laquelle le document ne doit plus être conservé en mémoire tampon ; Last-Modified : date de dernière modification du document (le client peut mettre en mémoire le document et en fournir une date dans un en-tête If-Modified-Since, il recevra soit un nouveau document mis à jour, soit un code d état 304 (Not modified); Refresh (propre à Netscape et Internet Explorer) : indique dans combien de temps (en secondes) le navigateur doit demander une page mise à jour (utiliser setintheader("refresh",temps)), toute les réponse doivent contenir Refresh (envoyer un code d état 204 (No Content) pour ne pas effectuer le prochain chargement) ; Set-Cookie (utiliser addcookie) :... Benoît Charroux - http 1.1 - janvier 2001-24

ServletResponse Envoyer des en-têtes de réponse setcontenttype( String type ) setcontentlength( int len ) Pour spécifier les en-têtes les plus courantes. HttpServletResponse setheader( String nom, String valeur ) setdateheader( String nom, long date ) setintheader ( String nom, int valeur ) addcookie( Cookie cookie ) sendredirect( String URL ) Spécifier l en-tête à envoyer (appeler avant d utiliser un PrintWriter pour envoyer un document). Envoi d un en-tête avec conversion. Les méthodes addheader, adddateheader et addintheader ajoute une nouvelle occurrence d un en-tête à une liste existante. Benoît Charroux - http 1.1 - janvier 2001-25 Obtenir des informations sur le serveur et sur le client

Obtenir des informations sur le serveur ServletRequest String getservername() String getserverport() Retourne le nom du serveur (par exemple www.coucou.com) à chaque requête pour les serveurs ayant plus d un nom (virtual hosting). interface Servlet abstract GenericServlet ServletContext getservletcontext() ServletContext String getserverinfo() getattributes() Retourne le nom et la version du logiciel serveur. Benoît Charroux - http 1.1 - janvier 2001-27 Obtenir des informations sur le client ServletRequest String getremoteaddr() String getremotehost() Retourne des informations sur la socket qui connecte le client au serveur (peut être un serveur proxy). interface Servlet ServletContext abstract GenericServlet ServletContext getservletcontext() String getserverinfo() getattributes() Retourne le nom et la version du logiciel serveur. Benoît Charroux - http 1.1 - janvier 2001-28

Obtenir des informations de chemin supplémentaire Une requête peut inclure un chemin pour désigner en général un fichier sur le serveur : dans l URL (par exemple http://pc-charroux/servlet/maservlet/index.html) ; dans le paramètre ACTION d un formulaire : Servlet <FORM METHOD=GET ACTION="/servlet/MaServlet/index.html"> HttpServletRequest String getpathinfo() String getpathtranslated() Retourne le chemin supplémentaire. Retourne le chemin réel qui complète le chemin supplémentaire. Benoît Charroux - http 1.1 - janvier 2001-29