Programmation Web : Protocole HTTP

Slides:



Advertisements
Présentations similaires
Première expérience d’utilisation des Web Services dans SmartTools Didier Parigot Projet OASIS INRIA Sophia www-sop.inria.fr/oasis/SmartTools Journée.
Advertisements

- Couche 7 - Couche application. Sommaire 1)Introduction 1)DNS 1)FTP et TFTP 1)HTTP 1)SNMP 1)SMTP 1)Telnet.
Comment monter son propre site WEB Présenté au ClubRIB par Daniel Pelletier le 10 février 2011.
Principe d identification des internautes Au service du dataWebhouse Philippe Holland :
Exposé de Système - Informatique et Réseau
TRANSFER Alger – Serveur Web Nicolas Larrousse Septembre Petit historique du Worl Wide Web Notion dHypertexte Extension à internet par Tim Berners.
2-Generalites FTP:Protocole De transfert de fichiers sur un réseau TCP/IP. Permet de copier des fichiers depuis ou vers un autre ordinateur du reseaux,d'administrer.
Web dynamique : solutions Sessions sous HTTP
FLSI602 Génie Informatique et Réseaux
10:59:29 Programmation Web Programmation Web : PHP Jérôme CUTRONA
11:02:471 Programmation Web : Flux RSS Jérôme CUTRONA Programmation Web
11:16:331 Programmation Web Programmation Web : Formulaires HTML Jérôme CUTRONA
11:20:16 Programmation Web PHP Création et manipulation d'images Jérôme CUTRONA
Jérôme CUTRONA PHP et bases de données Jérôme CUTRONA 01:07:51 Programmation Web
Programmation Web : Protocole HTTP
PhpMyAdmin 01:08:02 Programmation Web
Bases de données Objet singleton pour la connexion
Bases de données Objet singleton pour la connexion
FIN. Lycée Général et Technologique Simone de BEAUVOIR Quest-ce quInternet? On compare souvent Internet à une « autoroute » FIN.
Soutenance de stage · Par : Guillaume Prévost · Entreprise : Cynetic
Révision Avant lintra – Architecture de lordinateur, les composants, le fonctionnement, codage – Système dexploitation: organisation des données (fichier),
Common Gateway Interface
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
2006/2007Denis Cabasson – Programmation Web Cours de programmation web ENSAE
PPE : La Porte Intelligente
CPI/BTS 2 Programmation Web Introduction au PHP
Web et Flux RSS Sébastien Bayle. 30/01/09 Comment faire un site web aujourdhui ? – Construire son propre site – Utiliser des outils OpenSource – Utiliser.
Lycée Général et Technologique du Rempart - Marseille.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PPE : La Porte Intelligente Emmanuel Cabri Thomas Meyers Charles Moreau Antoine Beck Session 2011/2012 Lycée Raynouard Académie de Nice.
Comprendre l’environnement Web
Lycée Louis Vincent Séance 1
Les instructions PHP pour l'accès à une base de données MySql
Le protocole FTP.
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Internet : la mémoire courte ? Capture de sites Web en ligne Conférence B.N.F, Avril 2004 Xavier Roche(HTTrack)
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
PPE : La Porte Intelligente Emmanuel Cabri Thomas Meyers Charles Moreau Antoine Beck Session 2011/2012 Lycée Raynouard Académie de Nice.
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
JSP (Java Server Pages)
Olivier Nocent Programmation Web Olivier Nocent
Adaptée du cours de Richard Grin
Initiation au web dynamique
Première exploration des paquets capturés
Jim Graham Services du Réseau GISIN Activer l´Échange de Données des Espèces Envahissantes Jim Graham, Annie Simpson, Catherine Jarnevich, Greg Newman,
PHP 5° PARTIE : LES COOKIES
Pr BELKHIR Abdelkader Master RSD Sécurité des systèmes informatiques
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Développement d’application client/serveur
Les réseaux - Internet Historique Réseau local Internet Les protocoles
Cours de programmation web
Programmation Web : Introduction à XML
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
http 1.1.  connexion persistante Browser Mozilla Firefox Adresse ip.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Développement d’application Web.  Internet  WWW  Client/Serveur  HTTP.
Abderrahmane Bouarissa Damien Burglin Arnaud Sansig
Alexandre Blond Antoine Deshayes
Programmation Web : PHP
Programmation Web : PHP
Les langages de programmation
Protocole HTTP, cookies, sessions, authentification
 Fonctions diverses, scripts PHP Variables de session Les sessions sous PHP permettent de conserver des données d'un utilisateur coté serveur, lors de.
Programmation Web : Protocole HTTP
Séance /10/ Projet de site dynamique avec Dreamweaver : MyCMS
Sécurité des systèmes d’information: Web Security & Honeypots
Séminaire de rentrée cours de programmation web & Wordpress
Développement d’applications Web
Transcription de la présentation:

Programmation Web : Protocole HTTP Jérôme CUTRONA jerome.cutrona@univ-reims.fr 01:07:43 Programmation Web 2012-2013

Introduction HTTP : HyperText Transfer Protocol HTTP : Protocole du Web Protocole d'échange entre client et serveur Web Protocole orienté ligne de caractères Dans notre cas : Étude du protocole pour la culture (ça rime avec torture) Compréhension des cookies Compréhension des sessions Utilisation avancée de PHP (côté serveur) Utilisation d’AJAX 01:07:43 Programmation Web 2012-2013

Validation de la connexion Fermeture de connexion Utilisation de HTTP/1.0 Réseau Client Web (Navigateur) Serveur Web (Apache) Connexion TCP (port 80) Validation de la connexion Requête HTTP Réponse HTTP Fermeture de connexion 01:07:43 Programmation Web 2012-2013

Fermeture de connexion Utilisation de HTTP/1.0 Réseau Client Web (Navigateur) Serveur Web (Apache) <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>     <head>       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">       <link href="css/style.css" rel="stylesheet" type="text/css">       <title>J. Cutrona</title>     </head>     <body> <div id='b_connexion'> <form action='/index.php' method='post'> <table> <tr><td><input type='text' name='login' size='5' value='login' onClick="if (this.value=='login') this.value=''">     <input type='password' name='passwd' size='5'> <td><input type='submit' value='OK'> </table> </form> </div>     <h1>Programmation Web</h1>     <div class='partie'>     <a href='progwebS1'>Programmation Web S1</a><br>     <a href='progwebS2'>Programmation Web S2</a><br>     <a href='progwebS3'>Programmation Web S3</a><br>     </div>     <span id='lastmodified'> Dernière modification de cette page le 07/09/2008 à 23h27    </span>     <div class='valid'>         <a href='http://wwwdoc/w3c-validator/check?uri=referer'>            <img border="0"                 src="/img/valid-html401.gif"                 alt="Valid HTML 4.01!" height="31" width="88"></a>                 src="/img/vcss.gif"                 alt="Valid CSS!" height="31" width="88">     </body> </html> Désire des ressources Établissement d’une connexion TCP (port 80) Fermeture de connexion Réponse HTTP Requête HTTP Possède des ressources <head> … </html> As-tu / ? Oui <!DOCTYPE html PUBLIC… <html> Ressources Fichier / 01:07:44 Programmation Web 2012-2013

Remarques importantes Le client ouvre la connexion Le serveur ferme la connexion  1 transaction = 1 ressource transférée (v 1.0) Protocole sans état Aucune information gardée entre deux transactions Le serveur "oublie" le client après chaque transaction Problème pour la gestion d'une session 01:07:44 Programmation Web 2012-2013

Autres remarques importantes Le client demande des ressources Le serveur répond aux demandes des clients : Délivre la ressource demandée si possible Informe de la raison de non remise Echanges multi-plateforme  ASCII 7bits (encodage si non ASCII 7bits) Requêtes émises en clair Réponses émises en clair 01:07:44 Programmation Web 2012-2013

Structure d'un message HTTP Orienté lignes de caractères :  = retour à la ligne Requête ou réponse : Requête ou état  [Entête: valeur ] [… ] Ligne blanche  [Corps de message] HTTP 1.0: 16 en-têtes HTTP 1.1: 46 en-têtes 01:07:44 Programmation Web 2012-2013

Requête HTTP 1.0 GET|POST|HEAD chemin HTTP/1.0  User-Agent: agent  [Entête: valeur ] [… ] Ligne blanche  [Données] Netiquette 01:07:44 Programmation Web 2012-2013

Méthodes de requête HTTP HEAD demande des informations concernant la ressource GET demande des informations et la ressource désignée POST envoi de données (formulaire vers le serveur) et demande la ressource désignée PUT enregistrement du corps de la requête à l ’URL indiquée DELETE suppression de la ressource désignée par l ’URL 01:07:44 Programmation Web 2012-2013

Exemple de requête HTTP GET / HTTP/1.0  Ligne blanche  HEAD /page1.html HTTP/1.0  User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3  01:07:44 Programmation Web 2012-2013

Réponse HTTP HTTP/version code phrase  Content-Type: type_mime  [Entête: valeur ] [… ] Ligne blanche  [Données] Obligatoire Le client doit être informé de la nature de la ressource : HTML Image JPEG Doc PDF Animation Flash … Exemples de type_mime : text/html image/jpeg text/css video/mpeg … 01:07:44 Programmation Web 2012-2013

Exemple de réponse HTTP HTTP/1.x 200 OK  Date: Mon, 25 Apr 2005 04:25:17 GMT  Server: Apache/2.0.46 (Red Hat)  X-Powered-By: PHP/4.3.2  Content-Type: text/html  Ligne blanche  <html> <head><title> ... 01:07:44 Programmation Web 2012-2013

États des réponses HTTP Codes à 3 chiffres + phrase 1er chiffre : classe de réponse 1xx : Information (HTTP 1.1) 2xx : Succès 200 OK 3xx : Redirection 304 NOT MODIFIED 4xx : Erreur client 403 FORBIDDEN 404 NOT FOUND 5xx : Erreur serveur 500 INTERNAL ERROR 01:07:44 Programmation Web 2012-2013

Protocole HTTP 1.1 Contexte HTTP 1.0 : Améliorations HTTP 1.1 : 1 transaction = 1 ressource transmise Pas de connexion persistante Mauvaise utilisation du cache 1 IP = 1 serveur Web Améliorations HTTP 1.1 : 1 transaction persistante = X ressources transmises Connexion persistante Standardisation du cache Découpage d'une ressource (chunk encoding) 1 IP = X serveurs Web (proxy, serveurs virtuels) 01:07:44 Programmation Web 2012-2013

Protocole HTTP 1.1 Contraintes du client : inclure l'en-tête Host: à chacune des requêtes. Le serveur physique doit savoir quel serveur virtuel interroger accepter des réponses avec des données encodées de type chunked supporter les connections persistantes, ou inclure l'en-tête Connection: close à chacune des requêtes supporter la réponse 100 Continue 01:07:44 Programmation Web 2012-2013

Requête HTTP 1.1 GET|POST|HEAD chemin HTTP/1.1  Host: hôte  User-Agent: agent  [header ] [… ] Ligne blanche  [Données] Obligatoire Netiquette 01:07:44 Programmation Web 2012-2013

Soumission de formulaires <form action="form.php" method="GET"> Requête HTTP : GET form.php?p1=X&p2=Y HTTP/1.0  Ligne blanche  Traduit dans l'URL : http://abc/form.php?p1=X&p2=Y Peut donc être mis en favori Valeurs saisies dans le formulaire : Couples nom_champ=valeur_encodée séparés par & 01:07:44 Programmation Web 2012-2013

Soumission de formulaires <form action="form.php" method="POST"> Requête HTTP : POST form.php HTTP/1.0  Content-Type: application/x-www-form-urlencoded  Content-Length: 9  Ligne blanche  p1=X&p2=Y NON traduit dans l'URL Ne peut donc PAS être mis en favori Valeurs saisies dans le formulaire : Couples nom_champ=valeur_encodée séparés par & 01:07:44 Programmation Web 2012-2013

Encodage des données Protocole HTTP : ASCII 7bits (base commune à toutes les plateformes) Tout caractère non ASCII 7bits doit être encodé saisies dans les formulaires (fait par le navigateur) URL (à faire soi-même) Principe d’encodage : Espace  + Caractères spéciaux  %code_ASCII_hexa Caractères accentués  %code_ASCII_hexa Exemples : ô  %F4 [  %5B 01:07:44 Programmation Web 2012-2013

Cookies But : Serveur : Client : Éviter que le serveur « oublie le client » Maintenir un « mode connecté » (= session) Rendre transparent un échange client / serveur Exemple e-commerce : ajouter des articles au panier Serveur : Set-Cookie: var=val[; expires=date; path=chemin; domain=domaine] Client : Cookie: var=val; 01:07:44 Programmation Web 2012-2013

Cookies, principe des échanges Réseau Client Web (Navigateur) Serveur Web (Apache) Id=1212; path=/; GET / HTTP/1.1 HTTP/1.1 200 OK Set-Cookie: Id=1212; path=/; GET /liste HTTP/1.1 Cookie: Id=1212 HTTP/1.1 200 OK … 01:07:44 Programmation Web 2012-2013