Programmation Web Avancée. Cours 7 Web Storage Ajax.

Documents pareils
DOM - Document Object Model

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Devenez un véritable développeur web en 3 mois!

Programmation Web. Madalina Croitoru IUT Montpellier

Le stockage local de données en HTML5

BES WEBDEVELOPER ACTIVITÉ RÔLE

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

4. SERVICES WEB REST 46

Programmation Web. Introduction

Ajax, RIA et HTML Prise en charge d Ajax

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

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.

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

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

Formation : WEbMaster

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Document Object Model (DOM)

Petite définition : Présentation :

Architectures web/bases de données

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Dans l'article précédent, vous avez appris

Mise en œuvre des serveurs d application

les techniques d'extraction, les formulaires et intégration dans un site WEB

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Comment faire pour créer ses propres pages html?

TP JAVASCRIPT OMI4 TP5 SRC

Compte Rendu d intégration d application

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

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

Alfstore workflow framework Spécification technique

Architecture Orientée Service, JSON et API REST

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

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Diffuser un contenu sur Internet : notions de base... 13

Microsoft Hosted Exchange 2010 DOCUMENT D EXPLOITATION

Application Web et J2EE

La mémorisation des mots de passe dans les navigateurs web modernes

Introduction à. Oracle Application Express

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Approche Contract First

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Module http MMS AllMySMS.com Manuel d intégration

GUIDE DE DEMARRAGE V1.02

Hébergement de site web Damien Nouvel

Bien architecturer une application REST

Vulnérabilités et sécurisation des applications Web

CHAPITRE 11. Temps réel Remy Sharp

Web Tier : déploiement de servlets

Paris Airports - Web API Airports Path finding

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

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

LEA.C5. Développement de sites Web transactionnels

Développement des Systèmes d Information

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

Sage CRM. Sage CRM 7.3 Guide du portable

Google Tag Manager v2 v1 dispo sur GTM pour les nuls dispo sur

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

UE 8 Systèmes d information de gestion Le programme

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Spécificités Techniques créations publicitaires

Manuel d'installation

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Stockage du fichier dans une table mysql:

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Environnements de Développement

Présentation du PL/SQL

Technologies Web avancées. ING1 SIGL Technologies Web avancées

1. Installation du Module

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

API Web Service TéléAlerte

Campagnes d ings v.1.6

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

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

Les Architectures Orientées Services (SOA)

ISPConfig Documentation

Guide d utilisation. Version 1.1

Construire une application marketing Facebook sur la plateforme Windows Azure

Datalift. + + Architecture Modularité Déploiements. d j = 09/04/2015 Laurent BIHANIC

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

AWS avancé. Surveiller votre utilisation d EC2

26 Centre de Sécurité et de

Cours Informatique Master STEP

Android et le Cloud Computing

Mise à jour Stable Recrutement juin 2014 Mise à jour de la version stable St. Gallen

Modèle de cahier des charges pour un appel d offres relatif à une solution de gestion des processus métier (BPM)

JAB, une backdoor pour réseau Win32 inconnu

BIRT (Business Intelligence and Reporting Tools)

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

JRES 2005 : La mémorisation des mots de passe dans les navigateurs web modernes

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

LES ACCES ODBC AVEC LE SYSTEME SAS

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Transcription:

Programmation Web Avancée Cours 7 Web Storage Ajax kn@lri.fr

Plan 1 Introduction/ Généralité et rappels sur le Web/ Javascript : survol du langage 2 Objets/Portée des variables/tableaux/rappels MVC 3 Visiteur/Expressions régulières/git 4 DOM/Observers et MVC 5 Évènements DOM/Rappels sur les clôtures/set & Map 6 Canvas 7 Web Storage/Ajax 7.1 Webstorage 7.2 Modèle de sécurité de Javascript 7.3 Ajax 2/16

Persistance Le développement d'application Web moderne (et en particulier mobiles) fait apparaître un problème de persistance des données En effet, on souhaîte pouvoir stocker l'état du programme Javascript (pour pouvoir le restaurer plus tard). On peut aussi vouloir stocker des données volumineuses pour pouvoir y accéder «hors connexions». Les solutions «naïves» ne fonctionnent pas pour Javascript : Impossible en Javascript d'écrire dans des fichiers du répertoire utilisateur (modèle de sécurité de Javascript) Utilisation des cookies : ne permet pas de stocker des donnéer de grande taille. Envoi de données au serveur : nuit à l'interactivité 3/16

Storage L'object Storage implémente une table associative clé valeur : Associe dans l'espace de stockage la valeur value à la clé key (toutes deux sont des chaînes de caractères arbitraires)..setitem(key, value) :.getitem(key) : Renvoie la valeur associée à la clé key.removeitem(key) :.length :.key(i) : Supprime la valeur associée à la clé key Renvoie le nombre de clé associées Renvoie la valeur de la i ème clé Deux objets de type Storage sont accessibles : localstorage : stockage à durée de vie illimité sessionstorage : stockage jusqu'à la fin de la session (fermeture de l'onglet ou du navigateur) 4/16

Démo On va implémeter un simple compteur de click. On stocke que le nombre de click à la fois dans le localstorage et dans le sessionstorage. 5/16

Plan 1 Introduction/ Généralité et rappels sur le Web/ Javascript : survol du langage 2 Objets/Portée des variables/tableaux/rappels MVC 3 Visiteur/Expressions régulières/git 4 DOM/Observers et MVC 5 Évènements DOM/Rappels sur les clôtures/set & Map 6 Canvas 7 Web Storage/Ajax 7.1 Webstorage 7.2 Modèle de sécurité de Javascript 7.3 Ajax 6/16

Accès au données depuis Javascript Le modèle de sécurité des navigateurs Web impose une politique de même origine pour l'accès à des données (same origin policy). Les scripts de deux pages ne peuvent partager des données que si ces pages ont la même origine Deux pages ont la même origine si elles ont les même protocole, hôte et port. Si on considère : http://www.example.com/dir/page.html : http://www.example.com/dir/page2.html http://www.example.com/dir2/other.html http://user:password@www.example.com/dir2/other.html http://www.example2.com/dir/page2.html http://example.com/dir/page2.html http://www.example.com:8080/dir/page2.html https://www.example.com/dir/page2.html? http://www.example.com:80/dir/page2.html (dépend des navigateurs) 7/16

Politique de sécurité Si deux pages ont la même origine, alors elle peuvent se manipuler librement l'une/l'autre (changer leur DOM, enregistrer/supprimer des gestionnaires d'évènements, lire l'espace de stockage et les cookies, ) Cela pose de gros problèmes de sécurité et de confidentialité si les deux pages n'ont pas la même origine interdit. Attention : un script a pour origine celle de la page qui le charge et non pas l'url à laquelle il est stocké 8/16

Exercice Imaginer un scenario dans lequel une page charge légitimement un script distant et où ce dernier collecte des informations confidentielles? 9/16

Plan 1 Introduction/ Généralité et rappels sur le Web/ Javascript : survol du langage 2 Objets/Portée des variables/tableaux/rappels MVC 3 Visiteur/Expressions régulières/git 4 DOM/Observers et MVC 5 Évènements DOM/Rappels sur les clôtures/set & Map 6 Canvas 7 Web Storage/Ajax 7.1 Webstorage 7.2 Modèle de sécurité de Javascript 7.3 Ajax 10/16

Asynchronous Javascript and XML Une application Web doit parfois échanger avec un serveur Web : Calcul coûteux (en mémoire, temps, ) Centralisation (synchronisation de plusieurs clients, vérification d'identifiants, de licences, ) Accès à des données distantes Utilisation de formulaires HTML : Nuit à l'interactivité (alternance client/serveur/client/serveur fixée, temps de transmission) Perte de la page courante, nécessité de sauver l'état du client localement et re le restaurer AJAX : API permettant d'envoyer des requêtes HTTP à un serveur depuis Javascript de manière asynchrone, en tâche de fond et de récupérer le résultat 11/16

XmlHttpRequest Objet contenant les (nombreuses) méthodes permettant d'envoyer une requête GET ou POST à un serveur distant : new XmlHttpRequest() : création de l'objet.open(method, url, async) :.send() :.responsetext :.status :.readystate : crée une requête HTTP avec la méthode method (valant "GET" ou "POST"), vers l'url url. Le booléen async (vrai par défaut) exécute un envoi asynchrone. On le laissera toujours à vrai. envoie la requête au serveur. L'appel retourne immédiatement si async valait vrai lors de l'ouverture contient la réponse du serveur sous forme de chaîne de caractères le code HTTP de la réponse du serveur Un entier entre 0 (requête non envoyée) et 4 (résultat disponible) 12/16

Traîtement asynchrone de la réponse On se connecte à l'évennement readystatechange de l'objet XmlHttpRequest. Exemple: var xhr = new XmlHttpRequest(); xhr.open("get", "page.php?user=toto", true); xhr.addeventlistener("readystatechange", function (ev) { if (xhr.status == 200 && xhr.readystate == 4) { console.log(xhr.responsetext); } }); xhr.send(); 13/16

Avantage/Inconvénients Avantages : Évite de recharger la page Permet d'envoyer plusieurs requêtes de manière asynchrone Permet de faire autre chose (interaction utilisateur) en attendant que la réponse arrive Inconvénient Sujet à la same origin policy (donc un script ne peut parler qu'au serveur qui l'a fourni), sauf si le serveur accepte explicitement les connexions (il faut configurer le serveur Web spécialement). Interface relativement bas-niveau Ne permet pas une communication temps réel On peut demander un résultat d'un autre type que string (document HTML, objet JSON, ) 14/16

Démo On souhaite faire une boite de texte qui propose de la complétion à partir d'un dictionaire en français. On doit écrire une partie serveur et une partie client. 15/16

Retour sur l'exercice de «sécurité» Le script malicieux peut-il utiliser AJAX pour envoyer les cookies au serveur? 16/16