[{"data":1,"prerenderedAt":3677},["ShallowReactive",2],{"navigation":3,"\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http":585,"\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http__counterpart":2053,"\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http__slides":2458,"annexes-memo:\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http":2940,"annexes-slides:\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http":3280},[4,224,440],{"title":5,"path":6,"stem":7,"children":8},"SNT — Seconde","\u002Fsnt-2nde","0.snt-2nde\u002F0.index",[9,10,14,36,66,92,118,144,162,184,206],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"REVIEW pédagogique — SNT 2nde","\u002Fsnt-2nde\u002Freview","0.snt-2nde\u002FREVIEW",{"title":15,"path":16,"stem":17,"children":18},"Internet","\u002Fsnt-2nde\u002Fsa-internet","0.snt-2nde\u002Fsa-internet\u002F0.index",[19,20,24,28,32],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23},"Adresses symboliques et DNS","\u002Fsnt-2nde\u002Fsa-internet\u002Fadresses-dns","0.snt-2nde\u002Fsa-internet\u002F1.adresses-dns",{"title":25,"path":26,"stem":27},"Internet et les réseaux physiques","\u002Fsnt-2nde\u002Fsa-internet\u002Freseaux-physiques","0.snt-2nde\u002Fsa-internet\u002F2.reseaux-physiques",{"title":29,"path":30,"stem":31},"Protocoles TCP\u002FIP et routage des paquets","\u002Fsnt-2nde\u002Fsa-internet\u002Ftcp-ip-routage","0.snt-2nde\u002Fsa-internet\u002F3.tcp-ip-routage",{"title":33,"path":34,"stem":35},"Réseaux pair-à-pair","\u002Fsnt-2nde\u002Fsa-internet\u002Fpair-a-pair","0.snt-2nde\u002Fsa-internet\u002F4.pair-a-pair",{"title":37,"path":38,"stem":39,"children":40},"Le Web","\u002Fsnt-2nde\u002Fsb-web","0.snt-2nde\u002Fsb-web\u002F0.index",[41,42,46,50,54,58,62],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45},"Histoire du Web","\u002Fsnt-2nde\u002Fsb-web\u002Fhistoire-web","0.snt-2nde\u002Fsb-web\u002F1.histoire-web",{"title":47,"path":48,"stem":49},"URL et hypertexte","\u002Fsnt-2nde\u002Fsb-web\u002Furl-hypertexte","0.snt-2nde\u002Fsb-web\u002F2.url-hypertexte",{"title":51,"path":52,"stem":53},"HTML et CSS — le contenu et la présentation","\u002Fsnt-2nde\u002Fsb-web\u002Fhtml-css","0.snt-2nde\u002Fsb-web\u002F3.html-css",{"title":55,"path":56,"stem":57},"Client-serveur et requêtes HTTP","\u002Fsnt-2nde\u002Fsb-web\u002Fclient-serveur-http","0.snt-2nde\u002Fsb-web\u002F4.client-serveur-http",{"title":59,"path":60,"stem":61},"Moteurs de recherche","\u002Fsnt-2nde\u002Fsb-web\u002Fmoteurs-recherche","0.snt-2nde\u002Fsb-web\u002F5.moteurs-recherche",{"title":63,"path":64,"stem":65},"Sécurité du navigateur et notions juridiques","\u002Fsnt-2nde\u002Fsb-web\u002Fsecurite-droits","0.snt-2nde\u002Fsb-web\u002F6.securite-droits",{"title":67,"path":68,"stem":69,"children":70},"Les réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F0.index",[71,72,76,80,84,88],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75},"Panorama des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpanorama-rs","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F1.panorama-rs",{"title":77,"path":78,"stem":79},"Identité numérique et authentification","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fidentite-numerique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F2.identite-numerique",{"title":81,"path":82,"stem":83},"Le modèle économique des réseaux sociaux","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fmodele-economique","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F3.modele-economique",{"title":85,"path":86,"stem":87},"Petit monde et graphes","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fpetit-monde-graphes","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F4.petit-monde-graphes",{"title":89,"path":90,"stem":91},"La cyberviolence","\u002Fsnt-2nde\u002Fsc-reseaux-sociaux\u002Fcyberviolence","0.snt-2nde\u002Fsc-reseaux-sociaux\u002F5.cyberviolence",{"title":93,"path":94,"stem":95,"children":96},"Les données structurées et leur traitement","\u002Fsnt-2nde\u002Fsd-donnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F0.index",[97,98,102,106,110,114],{"title":93,"path":94,"stem":95},{"title":99,"path":100,"stem":101},"Données et formats","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-formats","0.snt-2nde\u002Fsd-donnees-structurees\u002F1.donnees-formats",{"title":103,"path":104,"stem":105},"Données structurées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fdonnees-structurees","0.snt-2nde\u002Fsd-donnees-structurees\u002F2.donnees-structurees",{"title":107,"path":108,"stem":109},"Métadonnées","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fmetadonnees","0.snt-2nde\u002Fsd-donnees-structurees\u002F3.metadonnees",{"title":111,"path":112,"stem":113},"Traitement de tables","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Ftraitement-tables","0.snt-2nde\u002Fsd-donnees-structurees\u002F4.traitement-tables",{"title":115,"path":116,"stem":117},"Le cloud","\u002Fsnt-2nde\u002Fsd-donnees-structurees\u002Fcloud","0.snt-2nde\u002Fsd-donnees-structurees\u002F5.cloud",{"title":119,"path":120,"stem":121,"children":122},"Localisation, cartographie et mobilité","\u002Fsnt-2nde\u002Fse-localisation-cartographie","0.snt-2nde\u002Fse-localisation-cartographie\u002F0.index",[123,124,128,132,136,140],{"title":119,"path":120,"stem":121},{"title":125,"path":126,"stem":127},"GPS et Galileo — se situer grâce aux satellites","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fgps-galileo","0.snt-2nde\u002Fse-localisation-cartographie\u002F1.gps-galileo",{"title":129,"path":130,"stem":131},"Décoder une trame NMEA","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Ftrame-nmea","0.snt-2nde\u002Fse-localisation-cartographie\u002F2.trame-nmea",{"title":133,"path":134,"stem":135},"Cartes numériques — GeoPortail et OpenStreetMap","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fcartes-numeriques","0.snt-2nde\u002Fse-localisation-cartographie\u002F3.cartes-numeriques",{"title":137,"path":138,"stem":139},"Itinéraires et graphes","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fitineraires-graphes","0.snt-2nde\u002Fse-localisation-cartographie\u002F4.itineraires-graphes",{"title":141,"path":142,"stem":143},"Confidentialité de la position","\u002Fsnt-2nde\u002Fse-localisation-cartographie\u002Fconfidentialite-position","0.snt-2nde\u002Fse-localisation-cartographie\u002F5.confidentialite-position",{"title":145,"path":146,"stem":147,"children":148},"Informatique embarquée et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee","0.snt-2nde\u002Fsf-info-embarquee\u002F0.index",[149,150,154,158],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153},"Systèmes informatiques embarqués","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fsystemes-embarques","0.snt-2nde\u002Fsf-info-embarquee\u002F1.systemes-embarques",{"title":155,"path":156,"stem":157},"Capteurs et actionneurs","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fcapteurs-actionneurs","0.snt-2nde\u002Fsf-info-embarquee\u002F2.capteurs-actionneurs",{"title":159,"path":160,"stem":161},"IHM et objets connectés","\u002Fsnt-2nde\u002Fsf-info-embarquee\u002Fihm-objet-connecte","0.snt-2nde\u002Fsf-info-embarquee\u002F3.ihm-objet-connecte",{"title":163,"path":164,"stem":165,"children":166},"Photographie numérique","\u002Fsnt-2nde\u002Fsg-photo-numerique","0.snt-2nde\u002Fsg-photo-numerique\u002F0.index",[167,168,172,176,180],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171},"Photosites, pixels et résolution","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fpixels-resolution","0.snt-2nde\u002Fsg-photo-numerique\u002F1.pixels-resolution",{"title":173,"path":174,"stem":175},"Les algorithmes de l'appareil photo","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Falgorithmes-photo","0.snt-2nde\u002Fsg-photo-numerique\u002F2.algorithmes-photo",{"title":177,"path":178,"stem":179},"Les métadonnées EXIF","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Fmetadonnees-exif","0.snt-2nde\u002Fsg-photo-numerique\u002F3.metadonnees-exif",{"title":181,"path":182,"stem":183},"Traiter une image en Python","\u002Fsnt-2nde\u002Fsg-photo-numerique\u002Ftraitement-rgb","0.snt-2nde\u002Fsg-photo-numerique\u002F4.traitement-rgb",{"title":185,"path":186,"stem":187,"children":188},"Notions transversales de programmation","\u002Fsnt-2nde\u002Fsh-prog-notions","0.snt-2nde\u002Fsh-prog-notions\u002F0.index",[189,190,194,198,202],{"title":185,"path":186,"stem":187},{"title":191,"path":192,"stem":193},"Séquences d'instructions et variables","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fsequences-affectations","0.snt-2nde\u002Fsh-prog-notions\u002F1.sequences-affectations",{"title":195,"path":196,"stem":197},"Instructions conditionnelles","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fconditionnelles","0.snt-2nde\u002Fsh-prog-notions\u002F2.conditionnelles",{"title":199,"path":200,"stem":201},"Boucles bornées et non bornées","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Fboucles","0.snt-2nde\u002Fsh-prog-notions\u002F3.boucles",{"title":203,"path":204,"stem":205},"Définitions et appels de fonctions","\u002Fsnt-2nde\u002Fsh-prog-notions\u002Ffonctions","0.snt-2nde\u002Fsh-prog-notions\u002F4.fonctions",{"title":207,"path":208,"stem":209,"children":210},"Démo des widgets MDC","\u002Fsnt-2nde\u002Fzz-demo-widgets","0.snt-2nde\u002Fzz-demo-widgets\u002F0.index",[211,212,216,220],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Démo statique — callouts, code, BO, illustration","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fstatique","0.snt-2nde\u002Fzz-demo-widgets\u002F1.statique",{"title":217,"path":218,"stem":219},"Démo interactive — self-eval et python-snippet","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Finteractif","0.snt-2nde\u002Fzz-demo-widgets\u002F2.interactif",{"title":221,"path":222,"stem":223},"Démo · 14 widgets de manipulation NSI","\u002Fsnt-2nde\u002Fzz-demo-widgets\u002Fwidgets-manipulation","0.snt-2nde\u002Fzz-demo-widgets\u002F3.widgets-manipulation",{"title":225,"path":226,"stem":227,"children":228},"NSI — Première","\u002Fnsi-1ere","1.nsi-1ere\u002F0.index",[229,230,234,256,282,304,328,354,380,410],{"title":225,"path":226,"stem":227},{"title":231,"path":232,"stem":233},"Relecture pédagogique — 8 chapitres NSI 1ère (PA → PH)","\u002Fnsi-1ere\u002Freview","1.nsi-1ere\u002FREVIEW",{"title":235,"path":236,"stem":237,"children":238},"Histoire de l'informatique","\u002Fnsi-1ere\u002Fpa-histoire-info","1.nsi-1ere\u002Fpa-histoire-info\u002F0.index",[239,240,244,248,252],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"De la préantiquité aux machines à calculer","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fpreantiquite-aux-machines","1.nsi-1ere\u002Fpa-histoire-info\u002F1.preantiquite-aux-machines",{"title":245,"path":246,"stem":247},"La machine universelle (1930-1950)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fmachine-universelle","1.nsi-1ere\u002Fpa-histoire-info\u002F2.machine-universelle",{"title":249,"path":250,"stem":251},"Les ordinateurs modernes (1947-1990)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Fordinateurs-modernes","1.nsi-1ere\u002Fpa-histoire-info\u002F3.ordinateurs-modernes",{"title":253,"path":254,"stem":255},"Réseaux, Web et IA (1969 à aujourd'hui)","\u002Fnsi-1ere\u002Fpa-histoire-info\u002Freseaux-et-web","1.nsi-1ere\u002Fpa-histoire-info\u002F4.reseaux-et-web",{"title":257,"path":258,"stem":259,"children":260},"Représentation des données — types et valeurs","\u002Fnsi-1ere\u002Fpb-types-valeurs","1.nsi-1ere\u002Fpb-types-valeurs\u002F0.index",[261,262,266,270,274,278],{"title":257,"path":258,"stem":259},{"title":263,"path":264,"stem":265},"Bases de numération et entiers positifs","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbases-entiers-positifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F1.bases-entiers-positifs",{"title":267,"path":268,"stem":269},"Entiers relatifs et complément à deux","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fentiers-relatifs","1.nsi-1ere\u002Fpb-types-valeurs\u002F2.entiers-relatifs",{"title":271,"path":272,"stem":273},"Nombres flottants et virgule flottante","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fflottants","1.nsi-1ere\u002Fpb-types-valeurs\u002F3.flottants",{"title":275,"path":276,"stem":277},"Textes et encodages — ASCII, ISO-8859-1, Unicode","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Ftextes-encodages","1.nsi-1ere\u002Fpb-types-valeurs\u002F4.textes-encodages",{"title":279,"path":280,"stem":281},"Valeurs booléennes et opérateurs logiques","\u002Fnsi-1ere\u002Fpb-types-valeurs\u002Fbooleens","1.nsi-1ere\u002Fpb-types-valeurs\u002F5.booleens",{"title":283,"path":284,"stem":285,"children":286},"Représentation des données : types construits","\u002Fnsi-1ere\u002Fpc-types-construits","1.nsi-1ere\u002Fpc-types-construits\u002F0.index",[287,288,292,296,300],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"Tableaux et listes","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftableaux-listes","1.nsi-1ere\u002Fpc-types-construits\u002F1.tableaux-listes",{"title":293,"path":294,"stem":295},"Listes en compréhension","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fcomprehension","1.nsi-1ere\u002Fpc-types-construits\u002F2.comprehension",{"title":297,"path":298,"stem":299},"Tuples et p-uplets nommés","\u002Fnsi-1ere\u002Fpc-types-construits\u002Ftuples","1.nsi-1ere\u002Fpc-types-construits\u002F3.tuples",{"title":301,"path":302,"stem":303},"Dictionnaires","\u002Fnsi-1ere\u002Fpc-types-construits\u002Fdictionnaires","1.nsi-1ere\u002Fpc-types-construits\u002F4.dictionnaires",{"title":305,"path":306,"stem":307,"children":308},"Traitement de données en tables","\u002Fnsi-1ere\u002Fpd-tables-donnees","1.nsi-1ere\u002Fpd-tables-donnees\u002F0.index",[309,310,314,318,322],{"title":305,"path":306,"stem":307},{"title":311,"path":312,"stem":313},"Tables et CSV","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftables-csv","1.nsi-1ere\u002Fpd-tables-donnees\u002F1.tables-csv",{"title":315,"path":316,"stem":317},"Recherche et filtrage","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Frecherche","1.nsi-1ere\u002Fpd-tables-donnees\u002F2.recherche",{"title":319,"path":320,"stem":321},"Trier une table","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ftri","1.nsi-1ere\u002Fpd-tables-donnees\u002F3.tri",{"title":323,"path":324,"stem":325,"children":326},"Fusion et indexation","\u002Fnsi-1ere\u002Fpd-tables-donnees\u002Ffusion-indexation","1.nsi-1ere\u002Fpd-tables-donnees\u002F4.fusion-indexation",[327],{"title":323,"path":324,"stem":325},{"title":329,"path":330,"stem":331,"children":332},"IHM sur le Web","\u002Fnsi-1ere\u002Fpe-ihm-web","1.nsi-1ere\u002Fpe-ihm-web\u002F0.index",[333,334,338,342,346,350],{"title":329,"path":330,"stem":331},{"title":335,"path":336,"stem":337},"HTML et CSS — rappel de structure","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fhtml-css-bases","1.nsi-1ere\u002Fpe-ihm-web\u002F1.html-css-bases",{"title":339,"path":340,"stem":341},"Formulaires HTML","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fformulaires","1.nsi-1ere\u002Fpe-ihm-web\u002F2.formulaires",{"title":343,"path":344,"stem":345},"Événements JavaScript","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fevenements-js","1.nsi-1ere\u002Fpe-ihm-web\u002F3.evenements-js",{"title":347,"path":348,"stem":349},"Manipulation du DOM","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fdom-interaction","1.nsi-1ere\u002Fpe-ihm-web\u002F4.dom-interaction",{"title":351,"path":352,"stem":353},"Client, serveur et HTTP","\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http","1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http",{"title":355,"path":356,"stem":357,"children":358},"Architectures matérielles et systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os","1.nsi-1ere\u002Fpf-archi-os\u002F0.index",[359,360,364,368,372,376],{"title":355,"path":356,"stem":357},{"title":361,"path":362,"stem":363},"Le modèle de von Neumann","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fvon-neumann","1.nsi-1ere\u002Fpf-archi-os\u002F1.von-neumann",{"title":365,"path":366,"stem":367},"Périphériques et interface homme-machine","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fperipheriques-ihm","1.nsi-1ere\u002Fpf-archi-os\u002F2.peripheriques-ihm",{"title":369,"path":370,"stem":371},"Les systèmes d'exploitation","\u002Fnsi-1ere\u002Fpf-archi-os\u002Fsystemes-exploitation","1.nsi-1ere\u002Fpf-archi-os\u002F3.systemes-exploitation",{"title":373,"path":374,"stem":375},"Linux et le shell","\u002Fnsi-1ere\u002Fpf-archi-os\u002Flinux-shell","1.nsi-1ere\u002Fpf-archi-os\u002F4.linux-shell",{"title":377,"path":378,"stem":379},"Réseaux et protocoles","\u002Fnsi-1ere\u002Fpf-archi-os\u002Freseaux","1.nsi-1ere\u002Fpf-archi-os\u002F5.reseaux",{"title":381,"path":382,"stem":383,"children":384},"Langages et programmation","\u002Fnsi-1ere\u002Fpg-langages-prog","1.nsi-1ere\u002Fpg-langages-prog\u002F0.index",[385,386,390,394,398,402,406],{"title":381,"path":382,"stem":383},{"title":387,"path":388,"stem":389},"Diversité et unité des langages de programmation","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fdiversite-langages","1.nsi-1ere\u002Fpg-langages-prog\u002F1.diversite-langages",{"title":391,"path":392,"stem":393},"Constructions élémentaires","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fconstructions-elementaires","1.nsi-1ere\u002Fpg-langages-prog\u002F2.constructions-elementaires",{"title":395,"path":396,"stem":397},"Fonctions","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Ffonctions","1.nsi-1ere\u002Fpg-langages-prog\u002F3.fonctions",{"title":399,"path":400,"stem":401},"Spécification d'une fonction","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fspecification","1.nsi-1ere\u002Fpg-langages-prog\u002F4.specification",{"title":403,"path":404,"stem":405},"Mise au point des programmes","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fmise-au-point","1.nsi-1ere\u002Fpg-langages-prog\u002F5.mise-au-point",{"title":407,"path":408,"stem":409},"Utilisation de bibliothèques","\u002Fnsi-1ere\u002Fpg-langages-prog\u002Fbibliotheques","1.nsi-1ere\u002Fpg-langages-prog\u002F6.bibliotheques",{"title":411,"path":412,"stem":413,"children":414},"Algorithmique","\u002Fnsi-1ere\u002Fph-algorithmique","1.nsi-1ere\u002Fph-algorithmique\u002F0.index",[415,416,420,424,428,432,436],{"title":411,"path":412,"stem":413},{"title":417,"path":418,"stem":419},"Parcours séquentiel d'un tableau","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fparcours-sequentiel","1.nsi-1ere\u002Fph-algorithmique\u002F1.parcours-sequentiel",{"title":421,"path":422,"stem":423},"Bases de la complexité","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fcomplexite-bases","1.nsi-1ere\u002Fph-algorithmique\u002F2.complexite-bases",{"title":425,"path":426,"stem":427},"Tris par sélection et par insertion","\u002Fnsi-1ere\u002Fph-algorithmique\u002Ftris","1.nsi-1ere\u002Fph-algorithmique\u002F3.tris",{"title":429,"path":430,"stem":431},"Recherche dichotomique","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fdichotomie","1.nsi-1ere\u002Fph-algorithmique\u002F4.dichotomie",{"title":433,"path":434,"stem":435},"Algorithmes gloutons","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fgloutons","1.nsi-1ere\u002Fph-algorithmique\u002F5.gloutons",{"title":437,"path":438,"stem":439},"Les k plus proches voisins (k-NN)","\u002Fnsi-1ere\u002Fph-algorithmique\u002Fknn","1.nsi-1ere\u002Fph-algorithmique\u002F6.knn",{"title":441,"path":442,"stem":443,"children":444},"NSI — Terminale","\u002Fnsi-tale","2.nsi-tale\u002F0.index",[445,446,450,476,498,536,560],{"title":441,"path":442,"stem":443},{"title":447,"path":448,"stem":449},"Review pédagogique — chapitres NSI Terminale (TA, TB, TC, TD, TE)","\u002Fnsi-tale\u002Freview","2.nsi-tale\u002FREVIEW",{"title":451,"path":452,"stem":453,"children":454},"Structures de données","\u002Fnsi-tale\u002Fta-structures-donnees","2.nsi-tale\u002Fta-structures-donnees\u002F0.index",[455,456,460,464,468,472],{"title":451,"path":452,"stem":453},{"title":457,"path":458,"stem":459},"Objet, classe, interface","\u002Fnsi-tale\u002Fta-structures-donnees\u002Finterface-implementation","2.nsi-tale\u002Fta-structures-donnees\u002F1.interface-implementation",{"title":461,"path":462,"stem":463},"Implémenter une structure — l'exemple de la file FIFO","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fimplementer-une-structure","2.nsi-tale\u002Fta-structures-donnees\u002F2.implementer-une-structure",{"title":465,"path":466,"stem":467},"Listes, piles, files, dictionnaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Flistes-piles-files-dict","2.nsi-tale\u002Fta-structures-donnees\u002F3.listes-piles-files-dict",{"title":469,"path":470,"stem":471},"Arbres binaires","\u002Fnsi-tale\u002Fta-structures-donnees\u002Farbres-binaires","2.nsi-tale\u002Fta-structures-donnees\u002F4.arbres-binaires",{"title":473,"path":474,"stem":475},"Graphes","\u002Fnsi-tale\u002Fta-structures-donnees\u002Fgraphes","2.nsi-tale\u002Fta-structures-donnees\u002F5.graphes",{"title":477,"path":478,"stem":479,"children":480},"Bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees","2.nsi-tale\u002Ftb-bases-de-donnees\u002F0.index",[481,482,486,490,494],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485},"Le modèle relationnel","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fmodele-relationnel","2.nsi-tale\u002Ftb-bases-de-donnees\u002F1.modele-relationnel",{"title":487,"path":488,"stem":489},"Bases de données relationnelles et anomalies de schéma","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fbase-relationnelle","2.nsi-tale\u002Ftb-bases-de-donnees\u002F2.base-relationnelle",{"title":491,"path":492,"stem":493},"Le langage SQL","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsql","2.nsi-tale\u002Ftb-bases-de-donnees\u002F3.sql",{"title":495,"path":496,"stem":497},"Les systèmes de gestion de bases de données","\u002Fnsi-tale\u002Ftb-bases-de-donnees\u002Fsgbd","2.nsi-tale\u002Ftb-bases-de-donnees\u002F4.sgbd",{"title":499,"path":500,"stem":501,"children":502},"Architectures matérielles, systèmes d'exploitation et réseaux","\u002Fnsi-tale\u002Ftc-archi-os-reseaux","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F0.index",[503,504,508,512,516,520,524,528,532],{"title":499,"path":500,"stem":501},{"title":505,"path":506,"stem":507},"Le système sur puce (SoC)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fsysteme-sur-puce","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F1.systeme-sur-puce",{"title":509,"path":510,"stem":511},"Processus et ordonnancement par l'OS","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprocessus-os","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F2.processus-os",{"title":513,"path":514,"stem":515},"L'interblocage (deadlock)","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Finterblocage","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F3.interblocage",{"title":517,"path":518,"stem":519},"Principes du routage","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Froutage-principes","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F4.routage-principes",{"title":521,"path":522,"stem":523},"Protocoles de routage RIP et OSPF","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fprotocoles-rip-ospf","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F5.protocoles-rip-ospf",{"title":525,"path":526,"stem":527},"Chiffrement symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-symetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F6.chiffrement-symetrique",{"title":529,"path":530,"stem":531},"Chiffrement asymétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fchiffrement-asymetrique","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F7.chiffrement-asymetrique",{"title":533,"path":534,"stem":535},"HTTPS — l'échange de clé symétrique","\u002Fnsi-tale\u002Ftc-archi-os-reseaux\u002Fhttps-tls","2.nsi-tale\u002Ftc-archi-os-reseaux\u002F8.https-tls",{"title":381,"path":537,"stem":538,"children":539},"\u002Fnsi-tale\u002Ftd-langages-prog","2.nsi-tale\u002Ftd-langages-prog\u002F0.index",[540,541,544,548,552,556],{"title":381,"path":537,"stem":538},{"title":403,"path":542,"stem":543},"\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmise-au-point","2.nsi-tale\u002Ftd-langages-prog\u002F1.mise-au-point",{"title":545,"path":546,"stem":547},"Modularité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fmodularite","2.nsi-tale\u002Ftd-langages-prog\u002F2.modularite",{"title":549,"path":550,"stem":551},"Récursivité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Frecursivite","2.nsi-tale\u002Ftd-langages-prog\u002F3.recursivite",{"title":553,"path":554,"stem":555},"Paradigmes de programmation","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fparadigmes","2.nsi-tale\u002Ftd-langages-prog\u002F4.paradigmes",{"title":557,"path":558,"stem":559},"Programme comme donnée — calculabilité et indécidabilité","\u002Fnsi-tale\u002Ftd-langages-prog\u002Fprogramme-comme-donnee","2.nsi-tale\u002Ftd-langages-prog\u002F5.programme-comme-donnee",{"title":411,"path":561,"stem":562,"children":563},"\u002Fnsi-tale\u002Fte-algorithmique","2.nsi-tale\u002Fte-algorithmique\u002F0.index",[564,565,569,573,577,581],{"title":411,"path":561,"stem":562},{"title":566,"path":567,"stem":568},"Algorithmes sur les arbres binaires","\u002Fnsi-tale\u002Fte-algorithmique\u002Farbres-binaires-algos","2.nsi-tale\u002Fte-algorithmique\u002F1.arbres-binaires-algos",{"title":570,"path":571,"stem":572},"Parcours de graphes — DFS, BFS, cycles, chemins","\u002Fnsi-tale\u002Fte-algorithmique\u002Fgraphes-parcours","2.nsi-tale\u002Fte-algorithmique\u002F2.graphes-parcours",{"title":574,"path":575,"stem":576},"Diviser pour régner","\u002Fnsi-tale\u002Fte-algorithmique\u002Fdiviser-pour-regner","2.nsi-tale\u002Fte-algorithmique\u002F3.diviser-pour-regner",{"title":578,"path":579,"stem":580},"Programmation dynamique","\u002Fnsi-tale\u002Fte-algorithmique\u002Fprogrammation-dynamique","2.nsi-tale\u002Fte-algorithmique\u002F4.programmation-dynamique",{"title":582,"path":583,"stem":584},"Recherche textuelle — l'algorithme de Boyer-Moore","\u002Fnsi-tale\u002Fte-algorithmique\u002Frecherche-textuelle","2.nsi-tale\u002Fte-algorithmique\u002F5.recherche-textuelle",{"id":586,"title":351,"bo":587,"body":589,"description":2038,"eval":2039,"extension":2040,"labo":2039,"meta":2041,"navigation":990,"path":352,"quizzes":2042,"readingTime":929,"seo":2051,"stem":353,"tp":2039,"__hash__":2052},"cours\u002F1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http.md",[588],"PE03",{"type":590,"value":591,"toc":2022},"minimark",[592,597,619,626,630,638,667,677,687,697,701,809,826,853,857,867,900,907,911,918,998,1039,1043,1046,1131,1170,1174,1260,1280,1291,1314,1318,1321,1429,1432,1482,1486,1497,1503,1506,1529,1550,1557,1561,1568,1711,1733,1741,1750,1871,1874,1945,1955,1959,1999,2003,2018],[593,594,596],"h2",{"id":595},"introduction","Introduction",[598,599,600,601,605,606,609,610,613,614,618],"p",{},"Vous savez désormais structurer une page (HTML, CSS), réagir aux gestes de\nl'utilisateur (événements), et la transformer en direct (DOM). Reste la pièce\nmanquante : comment cette page ",[602,603,604],"strong",{},"dialogue-t-elle avec le reste du monde",", et\nnotamment avec le ",[602,607,608],{},"serveur"," qui l'héberge ? La réponse tient en quatre\nlettres : ",[602,611,612],{},"HTTP",", ",[615,616,617],"em",{},"HyperText Transfer Protocol",". Ce cours formalise la\ndistinction client \u002F serveur et décrit le cycle requête → réponse qui\nfonde tout le Web.",[598,620,621,622,625],{},"Voir ",[623,624],"bo-ref",{"code":588},".",[593,627,629],{"id":628},"la-frontière-client-serveur","La frontière client \u002F serveur",[598,631,632,633,637],{},"Quand vous visitez ",[634,635,636],"code",{},"nsi.rocks"," :",[639,640,641,657],"ul",{},[642,643,644,645,648,649,652,653,656],"li",{},"Votre ",[602,646,647],{},"navigateur"," (Firefox, Chrome…) est le ",[602,650,651],{},"client",". Il tourne sur\n",[602,654,655],{},"votre machine",". Il exécute le HTML, le CSS et le JavaScript reçus.",[642,658,659,660,662,663,666],{},"Le ",[602,661,608],{}," est une machine ",[602,664,665],{},"distante"," qui détient les fichiers du\nsite et les envoie sur demande. Il exécute son propre code (Python, PHP,\nNode, Go… peu importe).",[668,669,674],"pre",{"className":670,"code":672,"language":673},[671],"language-text","[Votre ordinateur]                  [Quelque part dans le monde]\n+-----------------+                 +-------------------+\n|   Navigateur    |  ←── HTTP ──→  |  Serveur Web      |\n|  (HTML\u002FCSS\u002FJS)  |                 |  (code + données) |\n+-----------------+                 +-------------------+\n       Client                              Serveur\n","text",[634,675,672],{"__ignoreMap":676},"",[598,678,679,680,683,684,625],{},"Cette frontière est fondamentale. Tout ce que vous voyez à l'écran s'exécute\n",[602,681,682],{},"chez vous",". Tout ce qui touche aux données partagées (utilisateurs,\narticles, commandes…) s'exécute ",[602,685,686],{},"côté serveur",[688,689,690],"note",{},[598,691,692,693,696],{},"Un même langage peut tourner des deux côtés. JavaScript existe côté client\n(dans le navigateur) ",[602,694,695],{},"et"," côté serveur (via Node.js). Mais le rôle\nfonctionnel — afficher pour le client, gérer les données pour le serveur —\nreste distinct.",[593,698,700],{"id":699},"qui-fait-quoi","Qui fait quoi ?",[702,703,704,720],"table",{},[705,706,707],"thead",{},[708,709,710,714,717],"tr",{},[711,712,713],"th",{},"Tâche",[711,715,716],{},"Où ?",[711,718,719],{},"Pourquoi",[721,722,723,735,745,755,769,779,789,799],"tbody",{},[708,724,725,729,732],{},[726,727,728],"td",{},"Afficher la page",[726,730,731],{},"Client",[726,733,734],{},"Le rendu visuel se fait chez l'utilisateur.",[708,736,737,740,742],{},[726,738,739],{},"Valider visuellement un formulaire",[726,741,731],{},[726,743,744],{},"Réactivité immédiate, pas d'attente réseau.",[708,746,747,750,752],{},[726,748,749],{},"Réagir au clic, au clavier",[726,751,731],{},[726,753,754],{},"Les événements ont lieu chez l'utilisateur.",[708,756,757,763,766],{},[726,758,759,762],{},[602,760,761],{},"Re-valider"," les données reçues",[726,764,765],{},"Serveur",[726,767,768],{},"Le client peut être hostile, le serveur fait foi.",[708,770,771,774,776],{},[726,772,773],{},"Stocker les utilisateurs, les articles",[726,775,765],{},[726,777,778],{},"Les données sont partagées entre tous les visiteurs.",[708,780,781,784,786],{},[726,782,783],{},"Vérifier un mot de passe",[726,785,765],{},[726,787,788],{},"Le client ne doit pas voir les mots de passe stockés.",[708,790,791,794,796],{},[726,792,793],{},"Calculer un prix avec une promotion réelle",[726,795,765],{},[726,797,798],{},"Sinon n'importe qui modifie le prix dans son navigateur.",[708,800,801,804,806],{},[726,802,803],{},"Envoyer un e-mail",[726,805,765],{},[726,807,808],{},"Le client n'a pas accès au système d'envoi.",[810,811,812],"warning",{},[598,813,814,817,818,821,822,825],{},[602,815,816],{},"Règle d'or"," : tout ce qui vient du client est ",[602,819,820],{},"potentiellement\nmalveillant",". Le serveur doit ",[602,823,824],{},"toujours"," revalider, re-vérifier les droits\net ne jamais faire confiance aveuglément à un paramètre reçu — même s'il\nprovient d'un formulaire validé en HTML5.",[827,828,831,837],"self-eval-qcm",{"correct":829,"slug":830},"1","client-serveur-http-c1",[832,833,834],"template",{"v-slot:question":676},[598,835,836],{},"Où vérifier un mot de passe lors d'une connexion ?",[832,838,839],{"v-slot:choices":676},[639,840,841,844,847,850],{},[642,842,843],{},"Côté client",[642,845,846],{},"Côté serveur",[642,848,849],{},"Les deux à part égale",[642,851,852],{},"Aucun des deux",[593,854,856],{"id":855},"mémorisé-côté-client-retransmis-au-serveur","Mémorisé côté client, retransmis au serveur",[598,858,859,860,863,864,637],{},"Certaines informations sont ",[602,861,862],{},"conservées localement"," par le navigateur et\n",[602,865,866],{},"rejouées à chaque requête",[639,868,869,882,894],{},[642,870,871,874,875,878,879,625],{},[602,872,873],{},"Cookies"," : petits couples ",[634,876,877],{},"nom=valeur"," stockés par le navigateur,\nréenvoyés automatiquement à chaque requête vers le site qui les a posés.\nSert typiquement à garder la ",[602,880,881],{},"session de connexion",[642,883,884,889,890,893],{},[602,885,886],{},[634,887,888],{},"localStorage"," : zone de stockage clé-valeur côté client, ",[602,891,892],{},"non\nretransmise"," automatiquement. Pour des préférences locales (thème\nclair\u002Fsombre, brouillon de message).",[642,895,896,899],{},[602,897,898],{},"Cache HTTP"," : les images, scripts et feuilles de style téléchargés une\nfois peuvent être réutilisés sans nouvelle requête.",[598,901,902,903,906],{},"Le serveur, lui, ne mémorise rien sur le client en dehors de ce qu'il décide\nde stocker dans ses propres bases. Il ",[602,904,905],{},"dépend"," des cookies (ou d'un token\nenvoyé manuellement) pour reconnaître un visiteur d'une requête à l'autre.",[593,908,910],{"id":909},"anatomie-dune-requête-http","Anatomie d'une requête HTTP",[598,912,913,914,917],{},"Une ",[602,915,916],{},"requête HTTP"," est un message texte envoyé du client vers le serveur.\nElle comporte trois parties :",[668,919,923],{"className":920,"code":921,"language":922,"meta":676,"style":676},"language-http shiki shiki-themes github-light github-light github-dark","POST \u002Finscription HTTP\u002F1.1                 ← ligne de requête\nHost: exemple.fr                           ┐\nUser-Agent: Mozilla\u002F5.0 …                  │  en-têtes\nContent-Type: application\u002Fx-www-form-urlencoded │\nCookie: session=abc123                     ┘\n\nemail=alice%40exemple.fr&motdepasse=secret ← corps (optionnel)\n","http",[634,924,925,938,952,963,974,985,992],{"__ignoreMap":676},[926,927,930,934],"span",{"class":928,"line":929},"line",1,[926,931,933],{"class":932},"s8jYJ","POST",[926,935,937],{"class":936},"sxrX7"," \u002Finscription HTTP\u002F1.1                 ← ligne de requête\n",[926,939,941,945,948],{"class":928,"line":940},2,[926,942,944],{"class":943},"sovSZ","Host",[926,946,947],{"class":932},":",[926,949,951],{"class":950},"sIIMD"," exemple.fr                           ┐\n",[926,953,955,958,960],{"class":928,"line":954},3,[926,956,957],{"class":943},"User-Agent",[926,959,947],{"class":932},[926,961,962],{"class":950}," Mozilla\u002F5.0 …                  │  en-têtes\n",[926,964,966,969,971],{"class":928,"line":965},4,[926,967,968],{"class":943},"Content-Type",[926,970,947],{"class":932},[926,972,973],{"class":950}," application\u002Fx-www-form-urlencoded │\n",[926,975,977,980,982],{"class":928,"line":976},5,[926,978,979],{"class":943},"Cookie",[926,981,947],{"class":932},[926,983,984],{"class":950}," session=abc123                     ┘\n",[926,986,988],{"class":928,"line":987},6,[926,989,991],{"emptyLinePlaceholder":990},true,"\n",[926,993,995],{"class":928,"line":994},7,[926,996,997],{"class":936},"email=alice%40exemple.fr&motdepasse=secret ← corps (optionnel)\n",[999,1000,1001,1021,1027],"ol",{},[642,1002,1003,1006,1007,613,1010,1012,1013,1016,1017,1020],{},[602,1004,1005],{},"Ligne de requête"," : méthode (",[634,1008,1009],{},"GET",[634,1011,933],{},"…), chemin de la ressource\n(",[634,1014,1015],{},"\u002Finscription","), version du protocole (",[634,1018,1019],{},"HTTP\u002F1.1",").",[642,1022,1023,1026],{},[602,1024,1025],{},"En-têtes"," : informations annexes (hôte, type de contenu, cookies,\nidentité du client…).",[642,1028,1029,1032,1033,1035,1036,1020],{},[602,1030,1031],{},"Corps"," : données envoyées au serveur (présent surtout pour ",[634,1034,933],{},",\n",[634,1037,1038],{},"PUT",[593,1040,1042],{"id":1041},"anatomie-dune-réponse-http","Anatomie d'une réponse HTTP",[598,1044,1045],{},"Le serveur répond avec un message de même structure :",[668,1047,1049],{"className":920,"code":1048,"language":922,"meta":676,"style":676},"HTTP\u002F1.1 200 OK                            ← ligne de statut\nContent-Type: text\u002Fhtml; charset=utf-8     ┐  en-têtes\nSet-Cookie: session=abc123; HttpOnly       │\nContent-Length: 1024                       ┘\n\n\u003C!DOCTYPE html>                            ← corps (le HTML, le JSON…)\n\u003Chtml>…\u003C\u002Fhtml>\n",[634,1050,1051,1068,1077,1087,1097,1101,1115],{"__ignoreMap":676},[926,1052,1053,1055,1058,1062,1065],{"class":928,"line":929},[926,1054,612],{"class":932},[926,1056,1057],{"class":936},"\u002F",[926,1059,1061],{"class":1060},"sBjJW","1.1",[926,1063,1064],{"class":1060}," 200",[926,1066,1067],{"class":950}," OK                            ← ligne de statut\n",[926,1069,1070,1072,1074],{"class":928,"line":940},[926,1071,968],{"class":943},[926,1073,947],{"class":932},[926,1075,1076],{"class":950}," text\u002Fhtml; charset=utf-8     ┐  en-têtes\n",[926,1078,1079,1082,1084],{"class":928,"line":954},[926,1080,1081],{"class":943},"Set-Cookie",[926,1083,947],{"class":932},[926,1085,1086],{"class":950}," session=abc123; HttpOnly       │\n",[926,1088,1089,1092,1094],{"class":928,"line":965},[926,1090,1091],{"class":943},"Content-Length",[926,1093,947],{"class":932},[926,1095,1096],{"class":950}," 1024                       ┘\n",[926,1098,1099],{"class":928,"line":976},[926,1100,991],{"emptyLinePlaceholder":990},[926,1102,1103,1106,1109,1112],{"class":928,"line":987},[926,1104,1105],{"class":936},"\u003C!",[926,1107,1108],{"class":932},"DOCTYPE",[926,1110,1111],{"class":1060}," html",[926,1113,1114],{"class":936},">                            ← corps (le HTML, le JSON…)\n",[926,1116,1117,1120,1123,1126,1128],{"class":928,"line":994},[926,1118,1119],{"class":936},"\u003C",[926,1121,1122],{"class":943},"html",[926,1124,1125],{"class":936},">…\u003C\u002F",[926,1127,1122],{"class":943},[926,1129,1130],{"class":936},">\n",[999,1132,1133,1160,1165],{},[642,1134,1135,1138,1139,1142,1143,613,1146,1035,1149,1152,1153,613,1156,1159],{},[602,1136,1137],{},"Ligne de statut"," : version HTTP + ",[602,1140,1141],{},"code de statut"," (",[634,1144,1145],{},"200",[634,1147,1148],{},"404",[634,1150,1151],{},"500","…) + message court (",[634,1154,1155],{},"OK",[634,1157,1158],{},"Not Found","…).",[642,1161,1162,1164],{},[602,1163,1025],{}," : type du contenu retourné, cookies à poser, taille…",[642,1166,1167,1169],{},[602,1168,1031],{}," : le HTML, le JSON, l'image, etc.",[593,1171,1173],{"id":1172},"les-méthodes-http-courantes","Les méthodes HTTP courantes",[702,1175,1176,1186],{},[705,1177,1178],{},[708,1179,1180,1183],{},[711,1181,1182],{},"Méthode",[711,1184,1185],{},"Sémantique",[721,1187,1188,1202,1216,1230,1245],{},[708,1189,1190,1196],{},[726,1191,1192],{},[602,1193,1194],{},[634,1195,1009],{},[726,1197,1198,1201],{},[602,1199,1200],{},"Lire"," une ressource. Paramètres dans l'URL. Pas d'effet de bord.",[708,1203,1204,1210],{},[726,1205,1206],{},[602,1207,1208],{},[634,1209,933],{},[726,1211,1212,1215],{},[602,1213,1214],{},"Créer"," ou soumettre. Paramètres dans le corps. Effet de bord.",[708,1217,1218,1224],{},[726,1219,1220],{},[602,1221,1222],{},[634,1223,1038],{},[726,1225,1226,1229],{},[602,1227,1228],{},"Remplacer"," une ressource complète. Idempotent.",[708,1231,1232,1239],{},[726,1233,1234],{},[602,1235,1236],{},[634,1237,1238],{},"PATCH",[726,1240,1241,1244],{},[602,1242,1243],{},"Modifier"," partiellement une ressource.",[708,1246,1247,1254],{},[726,1248,1249],{},[602,1250,1251],{},[634,1252,1253],{},"DELETE",[726,1255,1256,1259],{},[602,1257,1258],{},"Supprimer"," une ressource.",[598,1261,1262,1263,1266,1267,613,1269,613,1271,1273,1274,1276,1277,1279],{},"Une méthode est dite ",[602,1264,1265],{},"idempotente"," quand l'effet d'une requête est le même\nqu'on la rejoue 1 fois ou 100 fois. ",[634,1268,1009],{},[634,1270,1038],{},[634,1272,1253],{}," sont idempotentes ;\n",[634,1275,933],{}," ne l'est pas (deux ",[634,1278,933],{}," créent typiquement deux ressources).",[598,1281,1282,1283,1290],{},"En classe de Première, retenir surtout ",[602,1284,1285,1287,1288],{},[634,1286,1009],{}," et ",[634,1289,933],{},", déjà vus avec\nles formulaires. Les autres sont là pour information.",[827,1292,1295,1300],{"correct":1293,"slug":1294},"2","client-serveur-http-c2",[832,1296,1297],{"v-slot:question":676},[598,1298,1299],{},"Combien de fois peut-on rejouer une requête GET sans changer l'état du serveur (cas idéal) ?",[832,1301,1302],{"v-slot:choices":676},[639,1303,1304,1306,1308,1311],{},[642,1305,829],{},[642,1307,1293],{},[642,1309,1310],{},"Autant qu’on veut",[642,1312,1313],{},"0",[593,1315,1317],{"id":1316},"les-codes-de-statut","Les codes de statut",[598,1319,1320],{},"Trois chiffres qui résument le sort de la requête. La famille (1er chiffre)\ndonne déjà l'indication :",[702,1322,1323,1336],{},[705,1324,1325],{},[708,1326,1327,1330,1333],{},[711,1328,1329],{},"Famille",[711,1331,1332],{},"Sens",[711,1334,1335],{},"Exemples",[721,1337,1338,1359,1380,1407],{},[708,1339,1340,1345,1348],{},[726,1341,1342],{},[602,1343,1344],{},"2xx",[726,1346,1347],{},"Succès",[726,1349,1350,613,1353,613,1356],{},[634,1351,1352],{},"200 OK",[634,1354,1355],{},"201 Created",[634,1357,1358],{},"204 No Content",[708,1360,1361,1366,1369],{},[726,1362,1363],{},[602,1364,1365],{},"3xx",[726,1367,1368],{},"Redirection",[726,1370,1371,613,1374,613,1377],{},[634,1372,1373],{},"301 Moved Permanently",[634,1375,1376],{},"302 Found",[634,1378,1379],{},"304 Not Modified",[708,1381,1382,1387,1393],{},[726,1383,1384],{},[602,1385,1386],{},"4xx",[726,1388,1389,1390],{},"Erreur ",[602,1391,1392],{},"côté client",[726,1394,1395,613,1398,613,1401,613,1404],{},[634,1396,1397],{},"400 Bad Request",[634,1399,1400],{},"401 Unauthorized",[634,1402,1403],{},"403 Forbidden",[634,1405,1406],{},"404 Not Found",[708,1408,1409,1414,1418],{},[726,1410,1411],{},[602,1412,1413],{},"5xx",[726,1415,1389,1416],{},[602,1417,686],{},[726,1419,1420,613,1423,613,1426],{},[634,1421,1422],{},"500 Internal Server Error",[634,1424,1425],{},"502 Bad Gateway",[634,1427,1428],{},"503 Service Unavailable",[598,1430,1431],{},"À connaître absolument :",[639,1433,1434,1441,1452,1460,1468,1475],{},[642,1435,1436,1440],{},[602,1437,1438],{},[634,1439,1352],{}," : tout va bien.",[642,1442,1443,1451],{},[602,1444,1445,1057,1448],{},[634,1446,1447],{},"301",[634,1449,1450],{},"302"," : la ressource a déménagé.",[642,1453,1454,1459],{},[602,1455,1456],{},[634,1457,1458],{},"401"," : non authentifié (« qui êtes-vous ? »).",[642,1461,1462,1467],{},[602,1463,1464],{},[634,1465,1466],{},"403"," : authentifié mais sans droit (« je sais qui vous êtes, et c'est\nnon »).",[642,1469,1470,1474],{},[602,1471,1472],{},[634,1473,1148],{}," : ressource introuvable.",[642,1476,1477,1481],{},[602,1478,1479],{},[634,1480,1151],{}," : le serveur a planté.",[593,1483,1485],{"id":1484},"http-vs-https-le-chiffrement","HTTP vs HTTPS — le chiffrement",[598,1487,1488,1489,1492,1493,1496],{},"HTTP en clair circule ",[602,1490,1491],{},"lisible"," sur le réseau. N'importe quel intermédiaire\n(routeur, point d'accès Wi-Fi public, FAI) pourrait lire vos requêtes.\n",[602,1494,1495],{},"HTTPS"," chiffre la communication via TLS (Transport Layer Security) :",[668,1498,1501],{"className":1499,"code":1500,"language":673},[671],"[Navigateur] ←── TLS chiffré ──→ [Serveur]\n            messages incompréhensibles\n            pour tout intermédiaire\n",[634,1502,1500],{"__ignoreMap":676},[598,1504,1505],{},"Effets concrets :",[639,1507,1508,1514,1520],{},[642,1509,1510,1513],{},[602,1511,1512],{},"Confidentialité"," : le contenu (mots de passe, panier, requête) reste\nprivé entre le client et le serveur.",[642,1515,1516,1519],{},[602,1517,1518],{},"Intégrité"," : un tiers ne peut pas modifier la requête en transit sans\nêtre détecté.",[642,1521,1522,1525,1526,1528],{},[602,1523,1524],{},"Authentification du serveur"," : le certificat TLS prouve que vous parlez\nbien à ",[634,1527,636],{}," et pas à un imposteur.",[810,1530,1531],{},[598,1532,1533,1541,1542,1545,1546,1549],{},[602,1534,1535,1536,1538,1539,625],{},"Sans HTTPS, ",[634,1537,933],{}," n'est pas plus sécurisé que ",[634,1540,1009],{}," Les deux passent en\nclair. C'est ",[602,1543,1544],{},"le chiffrement TLS"," qui rend la communication confidentielle,\npas la méthode HTTP. Tout site sérieux n'utilise plus que HTTPS aujourd'hui\n(",[634,1547,1548],{},"https:\u002F\u002F…"," dans la barre d'adresse, cadenas dans le navigateur).",[598,1551,1552,1553,1556],{},"Quand chiffrer ? ",[602,1554,1555],{},"Toujours",", en pratique. Les navigateurs modernes signalent\nles sites en HTTP simple comme « non sécurisés ». Les API publiques refusent\nsouvent les connexions non chiffrées.",[593,1558,1560],{"id":1559},"le-cycle-complet-exemple-pas-à-pas","Le cycle complet — exemple pas à pas",[598,1562,1563,1564,1567],{},"Vous tapez ",[634,1565,1566],{},"https:\u002F\u002Fnsi.rocks\u002Fcours"," dans le navigateur. Voici le scénario\ntype :",[999,1569,1570,1579,1585,1637,1643,1691,1701],{},[642,1571,1572,1575,1576,1578],{},[602,1573,1574],{},"Résolution DNS"," — le navigateur traduit ",[634,1577,636],{}," en adresse IP (vu\nen Seconde).",[642,1580,1581,1584],{},[602,1582,1583],{},"Établissement TLS"," — client et serveur négocient le chiffrement\n(HTTPS).",[642,1586,1587,1590,1591],{},[602,1588,1589],{},"Requête HTTP"," — le navigateur envoie :",[668,1592,1594],{"className":920,"code":1593,"language":922,"meta":676,"style":676},"GET \u002Fcours HTTP\u002F1.1\nHost: nsi.rocks\nUser-Agent: Mozilla\u002F5.0 …\nCookie: session=xyz\n",[634,1595,1596,1610,1619,1628],{"__ignoreMap":676},[926,1597,1598,1600,1603,1605,1607],{"class":928,"line":929},[926,1599,1009],{"class":932},[926,1601,1602],{"class":936}," \u002Fcours ",[926,1604,612],{"class":932},[926,1606,1057],{"class":936},[926,1608,1609],{"class":1060},"1.1\n",[926,1611,1612,1614,1616],{"class":928,"line":940},[926,1613,944],{"class":943},[926,1615,947],{"class":932},[926,1617,1618],{"class":950}," nsi.rocks\n",[926,1620,1621,1623,1625],{"class":928,"line":954},[926,1622,957],{"class":943},[926,1624,947],{"class":932},[926,1626,1627],{"class":950}," Mozilla\u002F5.0 …\n",[926,1629,1630,1632,1634],{"class":928,"line":965},[926,1631,979],{"class":943},[926,1633,947],{"class":932},[926,1635,1636],{"class":950}," session=xyz\n",[642,1638,1639,1642],{},[602,1640,1641],{},"Traitement serveur"," — le serveur identifie la session via le cookie,\nprépare la page (en BDD, en Markdown, peu importe), construit le HTML.",[642,1644,1645,1648,1649],{},[602,1646,1647],{},"Réponse HTTP"," — il renvoie :",[668,1650,1652],{"className":920,"code":1651,"language":922,"meta":676,"style":676},"HTTP\u002F1.1 200 OK\nContent-Type: text\u002Fhtml; charset=utf-8\n\n\u003C!DOCTYPE html>…\n",[634,1653,1654,1667,1676,1680],{"__ignoreMap":676},[926,1655,1656,1658,1660,1662,1664],{"class":928,"line":929},[926,1657,612],{"class":932},[926,1659,1057],{"class":936},[926,1661,1061],{"class":1060},[926,1663,1064],{"class":1060},[926,1665,1666],{"class":950}," OK\n",[926,1668,1669,1671,1673],{"class":928,"line":940},[926,1670,968],{"class":943},[926,1672,947],{"class":932},[926,1674,1675],{"class":950}," text\u002Fhtml; charset=utf-8\n",[926,1677,1678],{"class":928,"line":954},[926,1679,991],{"emptyLinePlaceholder":990},[926,1681,1682,1684,1686,1688],{"class":928,"line":965},[926,1683,1105],{"class":936},[926,1685,1108],{"class":932},[926,1687,1111],{"class":1060},[926,1689,1690],{"class":936},">…\n",[642,1692,1693,1696,1697,1700],{},[602,1694,1695],{},"Rendu"," — le navigateur lit le HTML, ",[602,1698,1699],{},"émet d'autres requêtes"," pour\nles CSS, les images, les scripts référencés (chacune avec son propre cycle\nrequête\u002Fréponse), construit le DOM et l'affiche.",[642,1702,1703,1706,1707,1710],{},[602,1704,1705],{},"Interactivité"," — une fois la page rendue, JavaScript peut émettre\nd'autres requêtes HTTP en arrière-plan via ",[634,1708,1709],{},"fetch(…)"," sans recharger la\npage.",[827,1712,1714,1719],{"correct":1293,"slug":1713},"client-serveur-http-c3",[832,1715,1716],{"v-slot:question":676},[598,1717,1718],{},"Que signifie un code de statut HTTP qui commence par 4 ?",[832,1720,1721],{"v-slot:choices":676},[639,1722,1723,1725,1727,1730],{},[642,1724,1347],{},[642,1726,1368],{},[642,1728,1729],{},"Erreur côté client",[642,1731,1732],{},"Erreur côté serveur",[593,1734,1736,1737,1740],{"id":1735},"requêtes-en-javascript-fetch-sensibilisation","Requêtes en JavaScript — ",[634,1738,1739],{},"fetch"," (sensibilisation)",[598,1742,1743,1744,1747,1748,637],{},"Pour communiquer avec le serveur ",[602,1745,1746],{},"sans recharger la page",", JavaScript\npropose la fonction ",[634,1749,1739],{},[668,1751,1755],{"className":1752,"code":1753,"language":1754,"meta":676,"style":676},"language-js shiki shiki-themes github-light github-light github-dark","fetch(\"\u002Fapi\u002Farticles\")\n  .then(reponse => reponse.json())\n  .then(donnees => {\n    console.log(\"Articles reçus :\", donnees);\n  })\n  .catch(erreur => {\n    console.error(\"Échec :\", erreur);\n  });\n","js",[634,1756,1757,1771,1797,1813,1829,1834,1850,1865],{"__ignoreMap":676},[926,1758,1759,1762,1765,1768],{"class":928,"line":929},[926,1760,1739],{"class":1761},"snPdu",[926,1763,1764],{"class":936},"(",[926,1766,1767],{"class":950},"\"\u002Fapi\u002Farticles\"",[926,1769,1770],{"class":936},")\n",[926,1772,1773,1776,1779,1781,1785,1788,1791,1794],{"class":928,"line":940},[926,1774,1775],{"class":936},"  .",[926,1777,1778],{"class":1761},"then",[926,1780,1764],{"class":936},[926,1782,1784],{"class":1783},"sP4rz","reponse",[926,1786,1787],{"class":932}," =>",[926,1789,1790],{"class":936}," reponse.",[926,1792,1793],{"class":1761},"json",[926,1795,1796],{"class":936},"())\n",[926,1798,1799,1801,1803,1805,1808,1810],{"class":928,"line":954},[926,1800,1775],{"class":936},[926,1802,1778],{"class":1761},[926,1804,1764],{"class":936},[926,1806,1807],{"class":1783},"donnees",[926,1809,1787],{"class":932},[926,1811,1812],{"class":936}," {\n",[926,1814,1815,1818,1821,1823,1826],{"class":928,"line":965},[926,1816,1817],{"class":936},"    console.",[926,1819,1820],{"class":1761},"log",[926,1822,1764],{"class":936},[926,1824,1825],{"class":950},"\"Articles reçus :\"",[926,1827,1828],{"class":936},", donnees);\n",[926,1830,1831],{"class":928,"line":976},[926,1832,1833],{"class":936},"  })\n",[926,1835,1836,1838,1841,1843,1846,1848],{"class":928,"line":987},[926,1837,1775],{"class":936},[926,1839,1840],{"class":1761},"catch",[926,1842,1764],{"class":936},[926,1844,1845],{"class":1783},"erreur",[926,1847,1787],{"class":932},[926,1849,1812],{"class":936},[926,1851,1852,1854,1857,1859,1862],{"class":928,"line":994},[926,1853,1817],{"class":936},[926,1855,1856],{"class":1761},"error",[926,1858,1764],{"class":936},[926,1860,1861],{"class":950},"\"Échec :\"",[926,1863,1864],{"class":936},", erreur);\n",[926,1866,1868],{"class":928,"line":1867},8,[926,1869,1870],{"class":936},"  });\n",[598,1872,1873],{},"Et pour envoyer des données :",[668,1875,1877],{"className":1752,"code":1876,"language":1754,"meta":676,"style":676},"fetch(\"\u002Fapi\u002Finscription\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application\u002Fjson\" },\n  body: JSON.stringify({ email: \"alice@exemple.fr\" })\n});\n",[634,1878,1879,1891,1901,1918,1940],{"__ignoreMap":676},[926,1880,1881,1883,1885,1888],{"class":928,"line":929},[926,1882,1739],{"class":1761},[926,1884,1764],{"class":936},[926,1886,1887],{"class":950},"\"\u002Fapi\u002Finscription\"",[926,1889,1890],{"class":936},", {\n",[926,1892,1893,1896,1899],{"class":928,"line":940},[926,1894,1895],{"class":936},"  method: ",[926,1897,1898],{"class":950},"\"POST\"",[926,1900,1035],{"class":936},[926,1902,1903,1906,1909,1912,1915],{"class":928,"line":954},[926,1904,1905],{"class":936},"  headers: { ",[926,1907,1908],{"class":950},"\"Content-Type\"",[926,1910,1911],{"class":936},": ",[926,1913,1914],{"class":950},"\"application\u002Fjson\"",[926,1916,1917],{"class":936}," },\n",[926,1919,1920,1923,1926,1928,1931,1934,1937],{"class":928,"line":965},[926,1921,1922],{"class":936},"  body: ",[926,1924,1925],{"class":1060},"JSON",[926,1927,625],{"class":936},[926,1929,1930],{"class":1761},"stringify",[926,1932,1933],{"class":936},"({ email: ",[926,1935,1936],{"class":950},"\"alice@exemple.fr\"",[926,1938,1939],{"class":936}," })\n",[926,1941,1942],{"class":928,"line":976},[926,1943,1944],{"class":936},"});\n",[598,1946,1947,1948,1950,1951,1954],{},"Vous n'aurez pas à maîtriser ",[634,1949,1739],{}," au programme de Première, mais\ncomprendre qu'",[602,1952,1953],{},"une page peut faire des requêtes HTTP en cours de vie",", sans\nsoumission de formulaire, est essentiel pour saisir le Web moderne.",[593,1956,1958],{"id":1957},"cas-particuliers-et-pièges","Cas particuliers et pièges",[639,1960,1961,1973,1979,1985],{},[642,1962,1963,1969,1970,1972],{},[602,1964,1965,1966,1968],{},"Confondre ",[634,1967,933],{}," et chiffrement"," : ",[634,1971,933],{}," cache les données de l'URL,\npas du réseau. Seul HTTPS chiffre.",[642,1974,1975,1978],{},[602,1976,1977],{},"Croire que le client est de confiance"," : un utilisateur peut désactiver\nJavaScript, modifier les requêtes envoyées, ignorer les validations HTML.\nLe serveur est seul gardien des règles.",[642,1980,1981,1984],{},[602,1982,1983],{},"Confondre 401 et 403"," : 401 = « pas connecté », 403 = « connecté mais\npas autorisé ».",[642,1986,1987,1990,1991,1994,1995,1998],{},[602,1988,1989],{},"Penser HTTP « sans état »"," : HTTP est ",[615,1992,1993],{},"stateless"," à la base — chaque\nrequête est indépendante. La continuité (session de connexion, panier)\nest rétablie ",[602,1996,1997],{},"artificiellement"," par les cookies ou les tokens.",[593,2000,2002],{"id":2001},"pour-aller-plus-loin","Pour aller plus loin",[598,2004,2005,2006,2009,2010,2013,2014,2017],{},"HTTP a évolué : ",[602,2007,2008],{},"HTTP\u002F2"," (2015) puis ",[602,2011,2012],{},"HTTP\u002F3"," (2022) optimisent le\ntransport sans changer la sémantique des méthodes et des codes. Le couple\n",[602,2015,2016],{},"REST"," (architecture qui mappe les méthodes HTTP sur des actions CRUD)\nstructure beaucoup d'API modernes — vous le rencontrerez en NSI Terminale et\nen BTS\u002FCPGE. Le principe reste : un client demande, un serveur répond, sur\nun protocole texte simple.",[2019,2020,2021],"style",{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":676,"searchDepth":940,"depth":940,"links":2023},[2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2036,2037],{"id":595,"depth":940,"text":596},{"id":628,"depth":940,"text":629},{"id":699,"depth":940,"text":700},{"id":855,"depth":940,"text":856},{"id":909,"depth":940,"text":910},{"id":1041,"depth":940,"text":1042},{"id":1172,"depth":940,"text":1173},{"id":1316,"depth":940,"text":1317},{"id":1484,"depth":940,"text":1485},{"id":1559,"depth":940,"text":1560},{"id":1735,"depth":940,"text":2035},"Requêtes en JavaScript — fetch (sensibilisation)",{"id":1957,"depth":940,"text":1958},{"id":2001,"depth":940,"text":2002},"Comment une page Web dialogue avec un serveur — requêtes HTTP, méthodes, codes de statut, et frontière client\u002Fserveur.",null,"md",{},[2043,2047,2049],{"slug":830,"kind":2044,"question":836,"choices":2045,"correct":829,"multi":2046,"explanation":676},"qcm",[843,846,849,852],false,{"slug":1294,"kind":2044,"question":1299,"choices":2048,"correct":1293,"multi":2046,"explanation":676},[829,1293,1310,1313],{"slug":1713,"kind":2044,"question":1718,"choices":2050,"correct":1293,"multi":2046,"explanation":676},[1347,1368,1729,1732],{"title":351,"description":2038},"9SYqWp3jCgPReL2AX_4Y8RB1QN087rYap1VwlWQkGhE",{"id":2054,"title":2055,"bo":2056,"body":2057,"description":2451,"eval":2039,"extension":2040,"labo":2039,"meta":2452,"navigation":2046,"path":2453,"quizzes":2454,"readingTime":929,"seo":2455,"stem":2456,"tp":2039,"__hash__":2457},"coursMemo\u002F1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http.memo.md","Client, serveur et HTTP — l'essentiel",[588],{"type":590,"value":2058,"toc":2442},[2059,2063,2068,2072,2112,2114,2166,2171,2175,2246,2250,2322,2325,2342,2346,2364,2368,2401,2439],[593,2060,2062],{"id":2061},"en-une-phrase","En une phrase",[598,2064,2065],{},[602,2066,2067],{},"Le client (navigateur, chez l'utilisateur) envoie des requêtes HTTP au\nserveur (machine distante) ; le serveur répond avec un code de statut et un\ncorps. HTTPS chiffre le tout.",[593,2069,2071],{"id":2070},"à-mémoriser","À mémoriser",[639,2073,2074,2079,2084,2094,2105],{},[642,2075,2076,2078],{},[602,2077,731],{}," = navigateur, chez l'utilisateur. Exécute HTML \u002F CSS \u002F JS.",[642,2080,2081,2083],{},[602,2082,765],{}," = machine distante. Détient les données partagées, applique\nles règles de sécurité.",[642,2085,2086,2087,613,2090,2093],{},"HTTP est un protocole ",[602,2088,2089],{},"texte",[602,2091,2092],{},"sans état"," (chaque requête est\nindépendante).",[642,2095,2096,2097,2100,2101,2104],{},"Continuité de session = ",[602,2098,2099],{},"cookies"," ou ",[602,2102,2103],{},"tokens"," retransmis à chaque\nrequête.",[642,2106,2107,2108,2111],{},"HTTPS = HTTP ",[602,2109,2110],{},"chiffré via TLS"," → confidentialité + intégrité +\nauthentification du serveur.",[593,2113,700],{"id":699},[702,2115,2116,2124],{},[705,2117,2118],{},[708,2119,2120,2122],{},[711,2121,843],{},[711,2123,846],{},[721,2125,2126,2134,2142,2155],{},[708,2127,2128,2131],{},[726,2129,2130],{},"Affichage HTML\u002FCSS",[726,2132,2133],{},"Stockage des données",[708,2135,2136,2139],{},[726,2137,2138],{},"Réactions aux événements",[726,2140,2141],{},"Vérification des droits",[708,2143,2144,2150],{},[726,2145,2146,2147],{},"Validation ",[602,2148,2149],{},"de confort",[726,2151,2146,2152],{},[602,2153,2154],{},"de sécurité",[708,2156,2157,2163],{},[726,2158,2159,2160,2162],{},"Stockage local (cookies, ",[634,2161,888],{},")",[726,2164,2165],{},"Base de données",[598,2167,2168,2170],{},[602,2169,816],{}," : ne jamais faire confiance aux données qui viennent du client.",[593,2172,2174],{"id":2173},"méthodes-http","Méthodes HTTP",[702,2176,2177,2189],{},[705,2178,2179],{},[708,2180,2181,2183,2186],{},[711,2182,1182],{},[711,2184,2185],{},"Rôle",[711,2187,2188],{},"Idempotente ?",[721,2190,2191,2202,2214,2224,2236],{},[708,2192,2193,2197,2199],{},[726,2194,2195],{},[634,2196,1009],{},[726,2198,1200],{},[726,2200,2201],{},"Oui",[708,2203,2204,2208,2211],{},[726,2205,2206],{},[634,2207,933],{},[726,2209,2210],{},"Créer \u002F soumettre",[726,2212,2213],{},"Non",[708,2215,2216,2220,2222],{},[726,2217,2218],{},[634,2219,1038],{},[726,2221,1228],{},[726,2223,2201],{},[708,2225,2226,2230,2233],{},[726,2227,2228],{},[634,2229,1238],{},[726,2231,2232],{},"Modifier partiellement",[726,2234,2235],{},"(cas par cas)",[708,2237,2238,2242,2244],{},[726,2239,2240],{},[634,2241,1253],{},[726,2243,1258],{},[726,2245,2201],{},[593,2247,2249],{"id":2248},"codes-de-statut","Codes de statut",[702,2251,2252,2262],{},[705,2253,2254],{},[708,2255,2256,2258,2260],{},[711,2257,1329],{},[711,2259,1332],{},[711,2261,1335],{},[721,2263,2264,2276,2288,2307],{},[708,2265,2266,2268,2270],{},[726,2267,1344],{},[726,2269,1347],{},[726,2271,2272,613,2274],{},[634,2273,1352],{},[634,2275,1355],{},[708,2277,2278,2280,2282],{},[726,2279,1365],{},[726,2281,1368],{},[726,2283,2284,613,2286],{},[634,2285,1447],{},[634,2287,1450],{},[708,2289,2290,2292,2296],{},[726,2291,1386],{},[726,2293,1389,2294],{},[602,2295,651],{},[726,2297,2298,613,2301,613,2303,613,2305],{},[634,2299,2300],{},"400",[634,2302,1458],{},[634,2304,1466],{},[634,2306,1148],{},[708,2308,2309,2311,2315],{},[726,2310,1413],{},[726,2312,1389,2313],{},[602,2314,608],{},[726,2316,2317,613,2319],{},[634,2318,1151],{},[634,2320,2321],{},"503",[598,2323,2324],{},"À distinguer :",[639,2326,2327,2332,2337],{},[642,2328,2329,2331],{},[602,2330,1458],{}," = pas authentifié (« qui êtes-vous ? »).",[642,2333,2334,2336],{},[602,2335,1466],{}," = authentifié mais sans droits.",[642,2338,2339,2341],{},[602,2340,1148],{}," = ressource inexistante.",[593,2343,2345],{"id":2344},"pièges-courants","Pièges courants",[639,2347,2348,2355,2358,2361],{},[642,2349,2350,2351,2354],{},"POST n'est ",[602,2352,2353],{},"pas"," chiffré ; HTTPS l'est.",[642,2356,2357],{},"Sans HTTPS, mots de passe et cookies circulent en clair.",[642,2359,2360],{},"Code 4xx → la faute vient du client (URL, droits…).",[642,2362,2363],{},"Code 5xx → le serveur a planté.",[593,2365,2367],{"id":2366},"squelette-déchange","Squelette d'échange",[668,2369,2371],{"className":920,"code":2370,"language":922,"meta":676,"style":676},"GET \u002Fcours HTTP\u002F1.1\nHost: nsi.rocks\nCookie: session=xyz\n",[634,2372,2373,2385,2393],{"__ignoreMap":676},[926,2374,2375,2377,2379,2381,2383],{"class":928,"line":929},[926,2376,1009],{"class":932},[926,2378,1602],{"class":936},[926,2380,612],{"class":932},[926,2382,1057],{"class":936},[926,2384,1609],{"class":1060},[926,2386,2387,2389,2391],{"class":928,"line":940},[926,2388,944],{"class":943},[926,2390,947],{"class":932},[926,2392,1618],{"class":950},[926,2394,2395,2397,2399],{"class":928,"line":954},[926,2396,979],{"class":943},[926,2398,947],{"class":932},[926,2400,1636],{"class":950},[668,2402,2403],{"className":920,"code":1651,"language":922,"meta":676,"style":676},[634,2404,2405,2417,2425,2429],{"__ignoreMap":676},[926,2406,2407,2409,2411,2413,2415],{"class":928,"line":929},[926,2408,612],{"class":932},[926,2410,1057],{"class":936},[926,2412,1061],{"class":1060},[926,2414,1064],{"class":1060},[926,2416,1666],{"class":950},[926,2418,2419,2421,2423],{"class":928,"line":940},[926,2420,968],{"class":943},[926,2422,947],{"class":932},[926,2424,1675],{"class":950},[926,2426,2427],{"class":928,"line":954},[926,2428,991],{"emptyLinePlaceholder":990},[926,2430,2431,2433,2435,2437],{"class":928,"line":965},[926,2432,1105],{"class":936},[926,2434,1108],{"class":932},[926,2436,1111],{"class":1060},[926,2438,1690],{"class":936},[2019,2440,2441],{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":676,"searchDepth":940,"depth":940,"links":2443},[2444,2445,2446,2447,2448,2449,2450],{"id":2061,"depth":940,"text":2062},{"id":2070,"depth":940,"text":2071},{"id":699,"depth":940,"text":700},{"id":2173,"depth":940,"text":2174},{"id":2248,"depth":940,"text":2249},{"id":2344,"depth":940,"text":2345},{"id":2366,"depth":940,"text":2367},"Mémo de révision sur la frontière client\u002Fserveur et le protocole HTTP.",{},"\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http.memo",[],{"title":2055,"description":2451},"1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http.memo","QD62QePe7FoQzydhBqHq_aPigrG0qEhE54wew_qiVqg",{"id":2459,"title":2460,"body":2461,"description":2934,"extension":2040,"meta":2935,"navigation":2046,"path":2936,"seo":2937,"stem":2938,"__hash__":2939},"coursSlides\u002F1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http.slides.md","Client, serveur et HTTP — diapositives",{"type":590,"value":2462,"toc":2932},[2463,2467,2470,2473,2477,2484,2496,2498,2500,2536,2541,2543,2547,2601,2604,2606,2610,2661,2664,2666,2668,2695,2702,2704,2706,2746,2761,2763,2767,2782,2785,2787,2791,2797,2805,2810,2812,2816,2849,2851,2855,2910,2917,2919,2923,2929],[2464,2465,351],"h1",{"id":2466},"client-serveur-et-http",[598,2468,2469],{},"Comment une page Web parle au reste du monde.",[2471,2472],"hr",{},[2464,2474,2476],{"id":2475},"la-frontière","La frontière",[2478,2479],"illustration",{"alt":2480,"kind":2481,"src":2482,"svg":2483},"Un navigateur à gauche et un serveur à droite, reliés par une flèche bidirectionnelle étiquetée HTTP","mermaid","\u002Fillustrations\u002F1.nsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http.svg","\u003Csvg id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" xmlns:xlink=\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink\" class=\"illustration-svg flowchart\" viewBox=\"0 0 363.90625 90\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\">\u003Cstyle>#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http{font-family:Geist,Inter,system-ui,-apple-system,sans-serif;font-size:14px;fill:var(--diagram-text);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .error-icon{fill:#fdecec;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .error-text{fill:var(--diagram-text);stroke:var(--diagram-text);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-thickness-normal{stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-thickness-thick{stroke-width:3.5px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-pattern-solid{stroke-dasharray:0;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-thickness-invisible{stroke-width:0;fill:none;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-pattern-dashed{stroke-dasharray:3;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edge-pattern-dotted{stroke-dasharray:2;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .marker{fill:var(--diagram-line);stroke:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .marker.cross{stroke:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http svg{font-family:Geist,Inter,system-ui,-apple-system,sans-serif;font-size:14px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http p{margin:0;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .label{font-family:Geist,Inter,system-ui,-apple-system,sans-serif;color:var(--diagram-text);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label text{fill:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label span{color:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label span p{background-color:transparent;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .label text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http span{fill:var(--diagram-text);color:var(--diagram-text);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node circle,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node ellipse,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node polygon,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node path{fill:var(--diagram-node-bg);stroke:var(--diagram-node-border);stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .rough-node .label text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node .label text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .image-shape .label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .icon-shape .label{text-anchor:middle;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .rough-node .label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node .label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .image-shape .label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .icon-shape .label{text-align:center;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node.clickable{cursor:pointer;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .root .anchor path{fill:var(--diagram-line)!important;stroke-width:0;stroke:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .arrowheadPath{fill:rgba(255, 255, 255, 0);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgePath .path{stroke:var(--diagram-line);stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .flowchart-link{stroke:var(--diagram-line);fill:none;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel{background-color:var(--diagram-surface);text-align:center;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel p{background-color:var(--diagram-surface);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel rect{opacity:0.5;background-color:var(--diagram-surface);fill:var(--diagram-surface);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .labelBkg{background-color:rgba(250, 251, 252, 0.5);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster rect{fill:var(--diagram-surface);stroke:var(--diagram-border);stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster text{fill:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster span{color:var(--diagram-line);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:Geist,Inter,system-ui,-apple-system,sans-serif;font-size:12px;background:var(--diagram-surface);border:1px solid var(--diagram-border);border-radius:2px;pointer-events:none;z-index:100;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .flowchartTitleText{text-anchor:middle;font-size:18px;fill:var(--diagram-text);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http rect.text{fill:none;stroke-width:0;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .icon-shape,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .image-shape{background-color:var(--diagram-surface);text-align:center;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .icon-shape p,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .image-shape p{background-color:var(--diagram-surface);padding:2px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .icon-shape .label rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .image-shape .label rect{opacity:0.5;background-color:var(--diagram-surface);fill:var(--diagram-surface);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node .neo-node{stroke:var(--diagram-node-border);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].cluster rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node polygon{stroke:url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node path{stroke:url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient);stroke-width:1px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node .neo-line path{stroke:var(--diagram-node-border);filter:none;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node circle{stroke:url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].node circle .state-start{fill:var(--diagram-text);}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].icon-shape .icon{fill:url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node circle,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node ellipse,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node polygon,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node path{stroke-width:1.5px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgePath .path{stroke-width:1.5px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .nodeLabel,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .messageText,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .actor text{font-family:Geist,Inter,system-ui,sans-serif!important;font-weight:500!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .nodeLabel,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .nodeLabel p,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster-label p{color:var(--diagram-text)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .nodeLabel .markdown-node-label,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .nodeLabel .markdown-node-label p{color:var(--diagram-text)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .stateLabel text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .stateLabel{fill:var(--diagram-text)!important;font-weight:600!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel{padding:0px 6px;background-color:var(--diagram-surface)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel rect.background,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel rect{fill:var(--diagram-surface)!important;opacity:1!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel .label text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .edgeLabel text{fill:var(--diagram-line)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .cluster rect{rx:4px;ry:4px;stroke-width:1px!important;stroke-dasharray:3,3!important;fill:transparent!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node rect,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .node polygon,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .stateGroup rect{rx:4px;ry:4px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http marker,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http marker path{fill:var(--diagram-line)!important;stroke:var(--diagram-line)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .marker{fill:var(--diagram-line)!important;stroke:var(--diagram-line)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .actor{stroke-width:1.5px;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .messageText,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .messageText tspan{fill:var(--diagram-text)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .titleText{fill:var(--diagram-text)!important;font-weight:600!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .note text,#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .note .nodeLabel{fill:var(--diagram-line)!important;color:var(--diagram-line)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .statediagram-cluster rect{fill:transparent!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http .statediagram-state .divider{stroke:var(--diagram-border)!important;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http :root{--mermaid-font-family:Geist,Inter,system-ui,-apple-system,sans-serif;}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#eef0fc\"]{fill:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#eef0fc\"]{stroke:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#eef0fc\"]{stop-color:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(238, 240, 252)\"]{fill:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(238, 240, 252)\"]{stroke:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(238, 240, 252)\"]{stop-color:var(--diagram-node-bg)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#4948b8\"]{fill:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#4948b8\"]{stroke:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#4948b8\"]{stop-color:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(73, 72, 184)\"]{fill:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(73, 72, 184)\"]{stroke:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(73, 72, 184)\"]{stop-color:var(--diagram-node-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#c8cdf5\"]{fill:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#c8cdf5\"]{stroke:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#c8cdf5\"]{stop-color:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(200, 205, 245)\"]{fill:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(200, 205, 245)\"]{stroke:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(200, 205, 245)\"]{stop-color:var(--diagram-accent-soft)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#1f2127\"]{fill:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#1f2127\"]{stroke:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#1f2127\"]{stop-color:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(31, 33, 39)\"]{fill:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(31, 33, 39)\"]{stroke:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(31, 33, 39)\"]{stop-color:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#000000\"]{fill:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#000000\"]{stroke:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#000000\"]{stop-color:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(0, 0, 0)\"]{fill:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(0, 0, 0)\"]{stroke:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(0, 0, 0)\"]{stop-color:var(--diagram-text)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#56595e\"]{fill:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#56595e\"]{stroke:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#56595e\"]{stop-color:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(86, 89, 94)\"]{fill:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(86, 89, 94)\"]{stroke:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(86, 89, 94)\"]{stop-color:var(--diagram-line)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#fafbfc\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#fafbfc\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#fafbfc\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(250, 251, 252)\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(250, 251, 252)\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(250, 251, 252)\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#f3f4f6\"]{fill:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#f3f4f6\"]{stroke:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#f3f4f6\"]{stop-color:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(243, 244, 246)\"]{fill:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(243, 244, 246)\"]{stroke:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(243, 244, 246)\"]{stop-color:var(--diagram-surface-alt)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#c4c8cd\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#c4c8cd\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#c4c8cd\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(196, 200, 205)\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(196, 200, 205)\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(196, 200, 205)\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#e5e7eb\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#e5e7eb\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#e5e7eb\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(229, 231, 235)\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(229, 231, 235)\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(229, 231, 235)\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#e0e0e0\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#e0e0e0\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#e0e0e0\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(224, 224, 224)\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(224, 224, 224)\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(224, 224, 224)\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#EDF2AE\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#EDF2AE\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#EDF2AE\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(237, 242, 174)\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(237, 242, 174)\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(237, 242, 174)\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#fff5ad\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#fff5ad\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#fff5ad\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(255, 245, 173)\"]{fill:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(255, 245, 173)\"]{stroke:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(255, 245, 173)\"]{stop-color:var(--diagram-surface)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"#666\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"#666\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"#666\"]{stop-color:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [fill=\"rgb(0, 6, 102)\"]{fill:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stroke=\"rgb(0, 6, 102)\"]{stroke:var(--diagram-border)}#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http [stop-color=\"rgb(0, 6, 102)\"]{stop-color:var(--diagram-border)}\u003C\u002Fstyle>\u003Cg>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\">\u003Cpath d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\">\u003Cpath d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\">\u003Cpath d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\">\u003Cpolygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\">\u003Ccircle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\">\u003Ccircle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\">\u003Ccircle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\">\u003Ccircle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\">\u003Cpath d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\">\u003Cpath d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\">\u003Cpath d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"\u002F>\u003C\u002Fmarker>\u003Cmarker id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\">\u003Cpath d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"\u002F>\u003C\u002Fmarker>\u003Cg class=\"root\">\u003Cg class=\"clusters\"\u002F>\u003Cg class=\"edgePaths\">\u003Cpath d=\"M148.016,45L155.385,45C162.755,45,177.495,45,192.234,45C206.974,45,221.714,45,229.083,45L236.453,45\" id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-L_client_serveur_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_client_serveur_0\" data-points=\"W3sieCI6MTQ0LjAxNTYyNSwieSI6NDV9LHsieCI6MTkyLjIzNDM3NSwieSI6NDV9LHsieCI6MjQwLjQ1MzEyNSwieSI6NDV9XQ==\" data-look=\"classic\" marker-start=\"url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointStart)\" marker-end=\"url(#ill-1-nsi-1ere-pe-ihm-web-client-serveur-http_flowchart-v2-pointEnd)\"\u002F>\u003C\u002Fg>\u003Cg class=\"edgeLabels\">\u003Cg class=\"edgeLabel\" transform=\"translate(192.234375, 45)\">\u003Cg class=\"label\" data-id=\"L_client_serveur_0\" transform=\"translate(0, -8.500000953674316)\">\u003Cg>\u003Crect class=\"background\" style=\"\" x=\"-20.21875\" y=\"-1.9999990463256836\" width=\"40.4375\" height=\"21\"\u002F>\u003Ctext y=\"-10.1\" text-anchor=\"middle\" style=\"\">\u003Ctspan class=\"text-outer-tspan row\" x=\"0\" y=\"-0.1em\" dy=\"1.1em\" text-anchor=\"middle\">\u003Ctspan font-style=\"normal\" class=\"text-inner-tspan\" font-weight=\"normal\">HTTP\u003C\u002Ftspan>\u003C\u002Ftspan>\u003C\u002Ftext>\u003C\u002Fg>\u003C\u002Fg>\u003C\u002Fg>\u003C\u002Fg>\u003Cg class=\"nodes\">\u003Cg class=\"node default\" id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-flowchart-client-0\" data-look=\"classic\" transform=\"translate(76.0078125, 45)\">\u003Crect class=\"basic label-container\" style=\"\" x=\"-68.0078125\" y=\"-33\" width=\"136.015625\" height=\"66\"\u002F>\u003Cg class=\"label\" style=\"\" transform=\"translate(-36.0078125, -21)\">\u003Crect\u002F>\u003CforeignObject width=\"72.015625\" height=\"42\">\u003Cdiv xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\">\u003Cspan class=\"nodeLabel\">\u003Cp>Navigateur\u003Cbr \u002F>(client)\u003C\u002Fp>\u003C\u002Fspan>\u003C\u002Fdiv>\u003C\u002FforeignObject>\u003C\u002Fg>\u003C\u002Fg>\u003Cg class=\"node default\" id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-flowchart-serveur-1\" data-look=\"classic\" transform=\"translate(298.1796875, 45)\">\u003Crect class=\"basic label-container\" style=\"\" x=\"-57.7265625\" y=\"-22.5\" width=\"115.453125\" height=\"45\"\u002F>\u003Cg class=\"label\" style=\"\" transform=\"translate(-25.7265625, -10.5)\">\u003Crect\u002F>\u003CforeignObject width=\"51.453125\" height=\"21\">\u003Cdiv xmlns=\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\">\u003Cspan class=\"nodeLabel\">\u003Cp>Serveur\u003C\u002Fp>\u003C\u002Fspan>\u003C\u002Fdiv>\u003C\u002FforeignObject>\u003C\u002Fg>\u003C\u002Fg>\u003C\u002Fg>\u003C\u002Fg>\u003C\u002Fg>\u003Cdefs>\u003Cfilter id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-drop-shadow\" height=\"130%\" width=\"130%\">\u003CfeDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"\u002F>\u003C\u002Ffilter>\u003C\u002Fdefs>\u003Cdefs>\u003Cfilter id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-drop-shadow-small\" height=\"150%\" width=\"150%\">\u003CfeDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"\u002F>\u003C\u002Ffilter>\u003C\u002Fdefs>\u003ClinearGradient id=\"ill-1-nsi-1ere-pe-ihm-web-client-serveur-http-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\u003Cstop offset=\"0%\" stop-color=\"#4948b8\" stop-opacity=\"1\"\u002F>\u003Cstop offset=\"100%\" stop-color=\"#c4c8cd\" stop-opacity=\"1\"\u002F>\u003C\u002FlinearGradient>\u003C\u002Fsvg>",[639,2485,2486,2491],{},[642,2487,2488,2490],{},[602,2489,731],{}," = navigateur (chez vous)",[642,2492,2493,2495],{},[602,2494,765],{}," = machine distante (les fichiers, les données)",[2471,2497],{},[2464,2499,700],{"id":699},[702,2501,2502,2510],{},[705,2503,2504],{},[708,2505,2506,2508],{},[711,2507,731],{},[711,2509,765],{},[721,2511,2512,2520,2528],{},[708,2513,2514,2517],{},[726,2515,2516],{},"Affichage",[726,2518,2519],{},"Stockage",[708,2521,2522,2525],{},[726,2523,2524],{},"Réactions UX",[726,2526,2527],{},"Validation sécurité",[708,2529,2530,2533],{},[726,2531,2532],{},"Validation confort",[726,2534,2535],{},"Vérification droits",[598,2537,2538,2540],{},[602,2539,816],{}," : ne jamais faire confiance au client.",[2471,2542],{},[2464,2544,2546],{"id":2545},"anatomie-dune-requête","Anatomie d'une requête",[668,2548,2550],{"className":920,"code":2549,"language":922,"meta":676,"style":676},"POST \u002Finscription HTTP\u002F1.1\nHost: exemple.fr\nContent-Type: application\u002Fx-www-form-urlencoded\nCookie: session=abc\n\nemail=alice@…&motdepasse=…\n",[634,2551,2552,2565,2574,2583,2592,2596],{"__ignoreMap":676},[926,2553,2554,2556,2559,2561,2563],{"class":928,"line":929},[926,2555,933],{"class":932},[926,2557,2558],{"class":936}," \u002Finscription ",[926,2560,612],{"class":932},[926,2562,1057],{"class":936},[926,2564,1609],{"class":1060},[926,2566,2567,2569,2571],{"class":928,"line":940},[926,2568,944],{"class":943},[926,2570,947],{"class":932},[926,2572,2573],{"class":950}," exemple.fr\n",[926,2575,2576,2578,2580],{"class":928,"line":954},[926,2577,968],{"class":943},[926,2579,947],{"class":932},[926,2581,2582],{"class":950}," application\u002Fx-www-form-urlencoded\n",[926,2584,2585,2587,2589],{"class":928,"line":965},[926,2586,979],{"class":943},[926,2588,947],{"class":932},[926,2590,2591],{"class":950}," session=abc\n",[926,2593,2594],{"class":928,"line":976},[926,2595,991],{"emptyLinePlaceholder":990},[926,2597,2598],{"class":928,"line":987},[926,2599,2600],{"class":936},"email=alice@…&motdepasse=…\n",[598,2602,2603],{},"Ligne + en-têtes + corps.",[2471,2605],{},[2464,2607,2609],{"id":2608},"anatomie-dune-réponse","Anatomie d'une réponse",[668,2611,2613],{"className":920,"code":2612,"language":922,"meta":676,"style":676},"HTTP\u002F1.1 200 OK\nContent-Type: text\u002Fhtml; charset=utf-8\n\n\u003C!DOCTYPE html>\n\u003Chtml>…\u003C\u002Fhtml>\n",[634,2614,2615,2627,2635,2639,2649],{"__ignoreMap":676},[926,2616,2617,2619,2621,2623,2625],{"class":928,"line":929},[926,2618,612],{"class":932},[926,2620,1057],{"class":936},[926,2622,1061],{"class":1060},[926,2624,1064],{"class":1060},[926,2626,1666],{"class":950},[926,2628,2629,2631,2633],{"class":928,"line":940},[926,2630,968],{"class":943},[926,2632,947],{"class":932},[926,2634,1675],{"class":950},[926,2636,2637],{"class":928,"line":954},[926,2638,991],{"emptyLinePlaceholder":990},[926,2640,2641,2643,2645,2647],{"class":928,"line":965},[926,2642,1105],{"class":936},[926,2644,1108],{"class":932},[926,2646,1111],{"class":1060},[926,2648,1130],{"class":936},[926,2650,2651,2653,2655,2657,2659],{"class":928,"line":976},[926,2652,1119],{"class":936},[926,2654,1122],{"class":943},[926,2656,1125],{"class":936},[926,2658,1122],{"class":943},[926,2660,1130],{"class":936},[598,2662,2663],{},"Ligne de statut + en-têtes + corps.",[2471,2665],{},[2464,2667,2174],{"id":2173},[639,2669,2670,2675,2680,2685,2690],{},[642,2671,2672,2674],{},[634,2673,1009],{}," — lire",[642,2676,2677,2679],{},[634,2678,933],{}," — créer \u002F soumettre",[642,2681,2682,2684],{},[634,2683,1038],{}," — remplacer",[642,2686,2687,2689],{},[634,2688,1238],{}," — modifier",[642,2691,2692,2694],{},[634,2693,1253],{}," — supprimer",[598,2696,2697,2698,1287,2700,625],{},"En NSI 1ère : maîtriser ",[634,2699,1009],{},[634,2701,933],{},[2471,2703],{},[2464,2705,2249],{"id":2248},[702,2707,2708,2716],{},[705,2709,2710],{},[708,2711,2712,2714],{},[711,2713,1329],{},[711,2715,1332],{},[721,2717,2718,2724,2730,2738],{},[708,2719,2720,2722],{},[726,2721,1344],{},[726,2723,1347],{},[708,2725,2726,2728],{},[726,2727,1365],{},[726,2729,1368],{},[708,2731,2732,2734],{},[726,2733,1386],{},[726,2735,1389,2736],{},[602,2737,651],{},[708,2739,2740,2742],{},[726,2741,1413],{},[726,2743,1389,2744],{},[602,2745,608],{},[598,2747,2748,613,2750,613,2752,613,2754,613,2756,613,2758,2760],{},[634,2749,1145],{},[634,2751,1447],{},[634,2753,1458],{},[634,2755,1466],{},[634,2757,1148],{},[634,2759,1151],{}," à connaître.",[2471,2762],{},[2464,2764,2766],{"id":2765},"_401-vs-403","401 vs 403",[639,2768,2769,2774],{},[642,2770,2771,2773],{},[602,2772,1458],{}," Unauthorized → pas connecté",[642,2775,2776,2778,2779],{},[602,2777,1466],{}," Forbidden → connecté ",[602,2780,2781],{},"mais sans droits",[598,2783,2784],{},"À ne pas confondre.",[2471,2786],{},[2464,2788,2790],{"id":2789},"https-http-chiffré","HTTPS = HTTP chiffré",[2478,2792],{"alt":2793,"kind":2794,"src":2795,"svg":2796},"Tuyau entre navigateur et serveur, doublé d'une gaine TLS qui rend les messages illisibles pour les intermédiaires","schema","\u002Fillustrations\u002F1.nsi-1ere\u002Fpe-ihm-web\u002Fhttps-tuyau.svg","\u003Csvg class=\"illustration-svg\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 480 220\" role=\"img\" aria-label=\"HTTPS chiffre le tuyau entre le navigateur et le serveur : une gaine TLS entoure les messages qui circulent, les rendant illisibles pour un intermédiaire qui les intercepte.\">\n  \u003Ctitle>HTTPS : le tuyau chiffré entre navigateur et serveur\u003C\u002Ftitle>\n  \u003Cstyle>\n    .ht-svg { font-family: Geist, Inter, system-ui, sans-serif; }\n    .ht-node     { fill: var(--diagram-node-bg); stroke: var(--diagram-node-border); stroke-width: 1.5; }\n    .ht-label    { fill: var(--diagram-text); font-size: 13px; font-weight: 500; }\n    .ht-pipe     { fill: var(--diagram-surface-alt); stroke: var(--diagram-node-border); stroke-width: 2; }\n    .ht-pipe-in  { fill: var(--diagram-surface); stroke: none; }\n    .ht-tls      { fill: var(--diagram-accent-soft); stroke: var(--diagram-node-border); stroke-width: 1.5; }\n    .ht-lock     { fill: none; stroke: var(--diagram-node-border); stroke-width: 1.6; }\n    .ht-cipher   { fill: var(--diagram-line); font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 1px; }\n    .ht-tls-cap  { fill: var(--diagram-node-border); font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 1.5px; }\n    .ht-eaves    { fill: var(--diagram-line); font-size: 11px; }\n    .ht-leader   { stroke: var(--diagram-border); stroke-width: 1.5; stroke-dasharray: 4 3; fill: none; }\n    .ht-x        { stroke: var(--diagram-line); stroke-width: 1.6; }\n  \u003C\u002Fstyle>\n\n  \u003Cg class=\"ht-svg\">\n    \u003C!-- TLS envelope wrapping the whole pipe -->\n    \u003Crect x=\"92\" y=\"58\" width=\"296\" height=\"74\" rx=\"14\" class=\"ht-tls\"\u002F>\n    \u003Ctext x=\"240\" y=\"50\" text-anchor=\"middle\" class=\"ht-tls-cap\">GAINE TLS\u003C\u002Ftext>\n\n    \u003C!-- inner pipe carrying the ciphered message -->\n    \u003Crect x=\"104\" y=\"74\" width=\"272\" height=\"42\" rx=\"8\" class=\"ht-pipe\"\u002F>\n    \u003Ctext x=\"240\" y=\"100\" text-anchor=\"middle\" class=\"ht-cipher\">a8?f3·9k#·z1q\u003C\u002Ftext>\n\n    \u003C!-- padlock (form, not colour) -->\n    \u003Cg transform=\"translate(118,86)\">\n      \u003Crect class=\"ht-lock\" x=\"0\" y=\"7\" width=\"16\" height=\"13\" rx=\"2\"\u002F>\n      \u003Cpath class=\"ht-lock\" d=\"M 3 7 V 4 a 5 5 0 0 1 10 0 V 7\"\u002F>\n    \u003C\u002Fg>\n\n    \u003C!-- browser (left) -->\n    \u003Crect x=\"20\" y=\"74\" width=\"72\" height=\"42\" rx=\"5\" class=\"ht-node\"\u002F>\n    \u003Ctext x=\"56\" y=\"100\" text-anchor=\"middle\" class=\"ht-label\">Navigateur\u003C\u002Ftext>\n\n    \u003C!-- server (right) -->\n    \u003Crect x=\"388\" y=\"74\" width=\"72\" height=\"42\" rx=\"5\" class=\"ht-node\"\u002F>\n    \u003Ctext x=\"424\" y=\"100\" text-anchor=\"middle\" class=\"ht-label\">Serveur\u003C\u002Ftext>\n\n    \u003C!-- eavesdropper below, sees only scrambled bytes -->\n    \u003Cpath class=\"ht-leader\" d=\"M 240 132 V 168\"\u002F>\n    \u003Cg transform=\"translate(204,170)\">\n      \u003Ccircle class=\"ht-x\" cx=\"12\" cy=\"12\" r=\"11\" fill=\"none\"\u002F>\n      \u003Cline class=\"ht-x\" x1=\"5\" y1=\"5\" x2=\"19\" y2=\"19\"\u002F>\n      \u003Cline class=\"ht-x\" x1=\"19\" y1=\"5\" x2=\"5\" y2=\"19\"\u002F>\n    \u003C\u002Fg>\n    \u003Ctext x=\"236\" y=\"187\" class=\"ht-eaves\">intermédiaire : message illisible\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n",[639,2798,2799,2801,2803],{},[642,2800,1512],{},[642,2802,1518],{},[642,2804,1524],{},[598,2806,2807],{},[602,2808,2809],{},"POST sans HTTPS ≠ sécurisé.",[2471,2811],{},[2464,2813,2815],{"id":2814},"le-cycle-complet","Le cycle complet",[999,2817,2818,2824,2827,2833,2835,2841,2844],{},[642,2819,2820,2821,2823],{},"DNS : ",[634,2822,636],{}," → IP",[642,2825,2826],{},"Handshake TLS",[642,2828,2829,2830,2162],{},"Requête HTTP (",[634,2831,2832],{},"GET \u002F…",[642,2834,1641],{},[642,2836,2837,2838,2840],{},"Réponse HTTP (",[634,2839,1352],{}," + HTML)",[642,2842,2843],{},"Le navigateur rend la page",[642,2845,2846,2847],{},"JS peut faire d'autres requêtes via ",[634,2848,1739],{},[2471,2850],{},[2464,2852,2854],{"id":2853},"requêtes-js-en-arrière-plan","Requêtes JS en arrière-plan",[668,2856,2858],{"className":1752,"code":2857,"language":1754,"meta":676,"style":676},"fetch(\"\u002Fapi\u002Farticles\")\n  .then(r => r.json())\n  .then(donnees => console.log(donnees));\n",[634,2859,2860,2870,2890],{"__ignoreMap":676},[926,2861,2862,2864,2866,2868],{"class":928,"line":929},[926,2863,1739],{"class":1761},[926,2865,1764],{"class":936},[926,2867,1767],{"class":950},[926,2869,1770],{"class":936},[926,2871,2872,2874,2876,2878,2881,2883,2886,2888],{"class":928,"line":940},[926,2873,1775],{"class":936},[926,2875,1778],{"class":1761},[926,2877,1764],{"class":936},[926,2879,2880],{"class":1783},"r",[926,2882,1787],{"class":932},[926,2884,2885],{"class":936}," r.",[926,2887,1793],{"class":1761},[926,2889,1796],{"class":936},[926,2891,2892,2894,2896,2898,2900,2902,2905,2907],{"class":928,"line":954},[926,2893,1775],{"class":936},[926,2895,1778],{"class":1761},[926,2897,1764],{"class":936},[926,2899,1807],{"class":1783},[926,2901,1787],{"class":932},[926,2903,2904],{"class":936}," console.",[926,2906,1820],{"class":1761},[926,2908,2909],{"class":936},"(donnees));\n",[598,2911,2912,2913,2916],{},"Permet la mise à jour ",[602,2914,2915],{},"sans recharger"," la page.",[2471,2918],{},[2464,2920,2922],{"id":2921},"à-retenir","À retenir",[598,2924,2925,2928],{},[602,2926,2927],{},"HTTP = requête + réponse, en texte clair, sans état.","\nLes cookies portent la session.\nHTTPS chiffre le tuyau.",[2019,2930,2931],{},"html pre.shiki code .s8jYJ, html code.shiki .s8jYJ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sovSZ, html code.shiki .sovSZ{--shiki-light:#22863A;--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP4rz, html code.shiki .sP4rz{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":676,"searchDepth":940,"depth":940,"links":2933},[],"Deck projetable pour la séance sur HTTP et la frontière client\u002Fserveur.",{},"\u002Fnsi-1ere\u002Fpe-ihm-web\u002Fclient-serveur-http.slides",{"title":2460,"description":2934},"1.nsi-1ere\u002Fpe-ihm-web\u002F5.client-serveur-http.slides","TLaqatSZH-4aLly5jS_BcaOH_YP6qGxp2f5JTZ04pd0",{"id":2054,"title":2055,"bo":2941,"body":2942,"description":2451,"eval":2039,"extension":2040,"labo":2039,"meta":3277,"navigation":2046,"path":2453,"quizzes":3278,"readingTime":929,"seo":3279,"stem":2456,"tp":2039,"__hash__":2457},[588],{"type":590,"value":2943,"toc":3268},[2944,2946,2950,2952,2978,2980,3022,3026,3028,3092,3094,3164,3166,3180,3182,3194,3196,3228,3266],[593,2945,2062],{"id":2061},[598,2947,2948],{},[602,2949,2067],{},[593,2951,2071],{"id":2070},[639,2953,2954,2958,2962,2968,2974],{},[642,2955,2956,2078],{},[602,2957,731],{},[642,2959,2960,2083],{},[602,2961,765],{},[642,2963,2086,2964,613,2966,2093],{},[602,2965,2089],{},[602,2967,2092],{},[642,2969,2096,2970,2100,2972,2104],{},[602,2971,2099],{},[602,2973,2103],{},[642,2975,2107,2976,2111],{},[602,2977,2110],{},[593,2979,700],{"id":699},[702,2981,2982,2990],{},[705,2983,2984],{},[708,2985,2986,2988],{},[711,2987,843],{},[711,2989,846],{},[721,2991,2992,2998,3004,3014],{},[708,2993,2994,2996],{},[726,2995,2130],{},[726,2997,2133],{},[708,2999,3000,3002],{},[726,3001,2138],{},[726,3003,2141],{},[708,3005,3006,3010],{},[726,3007,2146,3008],{},[602,3009,2149],{},[726,3011,2146,3012],{},[602,3013,2154],{},[708,3015,3016,3020],{},[726,3017,2159,3018,2162],{},[634,3019,888],{},[726,3021,2165],{},[598,3023,3024,2170],{},[602,3025,816],{},[593,3027,2174],{"id":2173},[702,3029,3030,3040],{},[705,3031,3032],{},[708,3033,3034,3036,3038],{},[711,3035,1182],{},[711,3037,2185],{},[711,3039,2188],{},[721,3041,3042,3052,3062,3072,3082],{},[708,3043,3044,3048,3050],{},[726,3045,3046],{},[634,3047,1009],{},[726,3049,1200],{},[726,3051,2201],{},[708,3053,3054,3058,3060],{},[726,3055,3056],{},[634,3057,933],{},[726,3059,2210],{},[726,3061,2213],{},[708,3063,3064,3068,3070],{},[726,3065,3066],{},[634,3067,1038],{},[726,3069,1228],{},[726,3071,2201],{},[708,3073,3074,3078,3080],{},[726,3075,3076],{},[634,3077,1238],{},[726,3079,2232],{},[726,3081,2235],{},[708,3083,3084,3088,3090],{},[726,3085,3086],{},[634,3087,1253],{},[726,3089,1258],{},[726,3091,2201],{},[593,3093,2249],{"id":2248},[702,3095,3096,3106],{},[705,3097,3098],{},[708,3099,3100,3102,3104],{},[711,3101,1329],{},[711,3103,1332],{},[711,3105,1335],{},[721,3107,3108,3120,3132,3150],{},[708,3109,3110,3112,3114],{},[726,3111,1344],{},[726,3113,1347],{},[726,3115,3116,613,3118],{},[634,3117,1352],{},[634,3119,1355],{},[708,3121,3122,3124,3126],{},[726,3123,1365],{},[726,3125,1368],{},[726,3127,3128,613,3130],{},[634,3129,1447],{},[634,3131,1450],{},[708,3133,3134,3136,3140],{},[726,3135,1386],{},[726,3137,1389,3138],{},[602,3139,651],{},[726,3141,3142,613,3144,613,3146,613,3148],{},[634,3143,2300],{},[634,3145,1458],{},[634,3147,1466],{},[634,3149,1148],{},[708,3151,3152,3154,3158],{},[726,3153,1413],{},[726,3155,1389,3156],{},[602,3157,608],{},[726,3159,3160,613,3162],{},[634,3161,1151],{},[634,3163,2321],{},[598,3165,2324],{},[639,3167,3168,3172,3176],{},[642,3169,3170,2331],{},[602,3171,1458],{},[642,3173,3174,2336],{},[602,3175,1466],{},[642,3177,3178,2341],{},[602,3179,1148],{},[593,3181,2345],{"id":2344},[639,3183,3184,3188,3190,3192],{},[642,3185,2350,3186,2354],{},[602,3187,2353],{},[642,3189,2357],{},[642,3191,2360],{},[642,3193,2363],{},[593,3195,2367],{"id":2366},[668,3197,3198],{"className":920,"code":2370,"language":922,"meta":676,"style":676},[634,3199,3200,3212,3220],{"__ignoreMap":676},[926,3201,3202,3204,3206,3208,3210],{"class":928,"line":929},[926,3203,1009],{"class":932},[926,3205,1602],{"class":936},[926,3207,612],{"class":932},[926,3209,1057],{"class":936},[926,3211,1609],{"class":1060},[926,3213,3214,3216,3218],{"class":928,"line":940},[926,3215,944],{"class":943},[926,3217,947],{"class":932},[926,3219,1618],{"class":950},[926,3221,3222,3224,3226],{"class":928,"line":954},[926,3223,979],{"class":943},[926,3225,947],{"class":932},[926,3227,1636],{"class":950},[668,3229,3230],{"className":920,"code":1651,"language":922,"meta":676,"style":676},[634,3231,3232,3244,3252,3256],{"__ignoreMap":676},[926,3233,3234,3236,3238,3240,3242],{"class":928,"line":929},[926,3235,612],{"class":932},[926,3237,1057],{"class":936},[926,3239,1061],{"class":1060},[926,3241,1064],{"class":1060},[926,3243,1666],{"class":950},[926,3245,3246,3248,3250],{"class":928,"line":940},[926,3247,968],{"class":943},[926,3249,947],{"class":932},[926,3251,1675],{"class":950},[926,3253,3254],{"class":928,"line":954},[926,3255,991],{"emptyLinePlaceholder":990},[926,3257,3258,3260,3262,3264],{"class":928,"line":965},[926,3259,1105],{"class":936},[926,3261,1108],{"class":932},[926,3263,1111],{"class":1060},[926,3265,1690],{"class":936},[2019,3267,2441],{},{"title":676,"searchDepth":940,"depth":940,"links":3269},[3270,3271,3272,3273,3274,3275,3276],{"id":2061,"depth":940,"text":2062},{"id":2070,"depth":940,"text":2071},{"id":699,"depth":940,"text":700},{"id":2173,"depth":940,"text":2174},{"id":2248,"depth":940,"text":2249},{"id":2344,"depth":940,"text":2345},{"id":2366,"depth":940,"text":2367},{},[],{"title":2055,"description":2451},{"id":2459,"title":2460,"body":3281,"description":2934,"extension":2040,"meta":3675,"navigation":2046,"path":2936,"seo":3676,"stem":2938,"__hash__":2939},{"type":590,"value":3282,"toc":3673},[3283,3285,3287,3289,3291,3293,3303,3305,3307,3337,3341,3343,3345,3393,3395,3397,3399,3449,3451,3453,3455,3477,3483,3485,3487,3527,3541,3543,3545,3557,3559,3561,3563,3565,3573,3577,3579,3581,3605,3607,3609,3659,3663,3665,3667,3671],[2464,3284,351],{"id":2466},[598,3286,2469],{},[2471,3288],{},[2464,3290,2476],{"id":2475},[2478,3292],{"alt":2480,"kind":2481,"src":2482,"svg":2483},[639,3294,3295,3299],{},[642,3296,3297,2490],{},[602,3298,731],{},[642,3300,3301,2495],{},[602,3302,765],{},[2471,3304],{},[2464,3306,700],{"id":699},[702,3308,3309,3317],{},[705,3310,3311],{},[708,3312,3313,3315],{},[711,3314,731],{},[711,3316,765],{},[721,3318,3319,3325,3331],{},[708,3320,3321,3323],{},[726,3322,2516],{},[726,3324,2519],{},[708,3326,3327,3329],{},[726,3328,2524],{},[726,3330,2527],{},[708,3332,3333,3335],{},[726,3334,2532],{},[726,3336,2535],{},[598,3338,3339,2540],{},[602,3340,816],{},[2471,3342],{},[2464,3344,2546],{"id":2545},[668,3346,3347],{"className":920,"code":2549,"language":922,"meta":676,"style":676},[634,3348,3349,3361,3369,3377,3385,3389],{"__ignoreMap":676},[926,3350,3351,3353,3355,3357,3359],{"class":928,"line":929},[926,3352,933],{"class":932},[926,3354,2558],{"class":936},[926,3356,612],{"class":932},[926,3358,1057],{"class":936},[926,3360,1609],{"class":1060},[926,3362,3363,3365,3367],{"class":928,"line":940},[926,3364,944],{"class":943},[926,3366,947],{"class":932},[926,3368,2573],{"class":950},[926,3370,3371,3373,3375],{"class":928,"line":954},[926,3372,968],{"class":943},[926,3374,947],{"class":932},[926,3376,2582],{"class":950},[926,3378,3379,3381,3383],{"class":928,"line":965},[926,3380,979],{"class":943},[926,3382,947],{"class":932},[926,3384,2591],{"class":950},[926,3386,3387],{"class":928,"line":976},[926,3388,991],{"emptyLinePlaceholder":990},[926,3390,3391],{"class":928,"line":987},[926,3392,2600],{"class":936},[598,3394,2603],{},[2471,3396],{},[2464,3398,2609],{"id":2608},[668,3400,3401],{"className":920,"code":2612,"language":922,"meta":676,"style":676},[634,3402,3403,3415,3423,3427,3437],{"__ignoreMap":676},[926,3404,3405,3407,3409,3411,3413],{"class":928,"line":929},[926,3406,612],{"class":932},[926,3408,1057],{"class":936},[926,3410,1061],{"class":1060},[926,3412,1064],{"class":1060},[926,3414,1666],{"class":950},[926,3416,3417,3419,3421],{"class":928,"line":940},[926,3418,968],{"class":943},[926,3420,947],{"class":932},[926,3422,1675],{"class":950},[926,3424,3425],{"class":928,"line":954},[926,3426,991],{"emptyLinePlaceholder":990},[926,3428,3429,3431,3433,3435],{"class":928,"line":965},[926,3430,1105],{"class":936},[926,3432,1108],{"class":932},[926,3434,1111],{"class":1060},[926,3436,1130],{"class":936},[926,3438,3439,3441,3443,3445,3447],{"class":928,"line":976},[926,3440,1119],{"class":936},[926,3442,1122],{"class":943},[926,3444,1125],{"class":936},[926,3446,1122],{"class":943},[926,3448,1130],{"class":936},[598,3450,2663],{},[2471,3452],{},[2464,3454,2174],{"id":2173},[639,3456,3457,3461,3465,3469,3473],{},[642,3458,3459,2674],{},[634,3460,1009],{},[642,3462,3463,2679],{},[634,3464,933],{},[642,3466,3467,2684],{},[634,3468,1038],{},[642,3470,3471,2689],{},[634,3472,1238],{},[642,3474,3475,2694],{},[634,3476,1253],{},[598,3478,2697,3479,1287,3481,625],{},[634,3480,1009],{},[634,3482,933],{},[2471,3484],{},[2464,3486,2249],{"id":2248},[702,3488,3489,3497],{},[705,3490,3491],{},[708,3492,3493,3495],{},[711,3494,1329],{},[711,3496,1332],{},[721,3498,3499,3505,3511,3519],{},[708,3500,3501,3503],{},[726,3502,1344],{},[726,3504,1347],{},[708,3506,3507,3509],{},[726,3508,1365],{},[726,3510,1368],{},[708,3512,3513,3515],{},[726,3514,1386],{},[726,3516,1389,3517],{},[602,3518,651],{},[708,3520,3521,3523],{},[726,3522,1413],{},[726,3524,1389,3525],{},[602,3526,608],{},[598,3528,3529,613,3531,613,3533,613,3535,613,3537,613,3539,2760],{},[634,3530,1145],{},[634,3532,1447],{},[634,3534,1458],{},[634,3536,1466],{},[634,3538,1148],{},[634,3540,1151],{},[2471,3542],{},[2464,3544,2766],{"id":2765},[639,3546,3547,3551],{},[642,3548,3549,2773],{},[602,3550,1458],{},[642,3552,3553,2778,3555],{},[602,3554,1466],{},[602,3556,2781],{},[598,3558,2784],{},[2471,3560],{},[2464,3562,2790],{"id":2789},[2478,3564],{"alt":2793,"kind":2794,"src":2795,"svg":2796},[639,3566,3567,3569,3571],{},[642,3568,1512],{},[642,3570,1518],{},[642,3572,1524],{},[598,3574,3575],{},[602,3576,2809],{},[2471,3578],{},[2464,3580,2815],{"id":2814},[999,3582,3583,3587,3589,3593,3595,3599,3601],{},[642,3584,2820,3585,2823],{},[634,3586,636],{},[642,3588,2826],{},[642,3590,2829,3591,2162],{},[634,3592,2832],{},[642,3594,1641],{},[642,3596,2837,3597,2840],{},[634,3598,1352],{},[642,3600,2843],{},[642,3602,2846,3603],{},[634,3604,1739],{},[2471,3606],{},[2464,3608,2854],{"id":2853},[668,3610,3611],{"className":1752,"code":2857,"language":1754,"meta":676,"style":676},[634,3612,3613,3623,3641],{"__ignoreMap":676},[926,3614,3615,3617,3619,3621],{"class":928,"line":929},[926,3616,1739],{"class":1761},[926,3618,1764],{"class":936},[926,3620,1767],{"class":950},[926,3622,1770],{"class":936},[926,3624,3625,3627,3629,3631,3633,3635,3637,3639],{"class":928,"line":940},[926,3626,1775],{"class":936},[926,3628,1778],{"class":1761},[926,3630,1764],{"class":936},[926,3632,2880],{"class":1783},[926,3634,1787],{"class":932},[926,3636,2885],{"class":936},[926,3638,1793],{"class":1761},[926,3640,1796],{"class":936},[926,3642,3643,3645,3647,3649,3651,3653,3655,3657],{"class":928,"line":954},[926,3644,1775],{"class":936},[926,3646,1778],{"class":1761},[926,3648,1764],{"class":936},[926,3650,1807],{"class":1783},[926,3652,1787],{"class":932},[926,3654,2904],{"class":936},[926,3656,1820],{"class":1761},[926,3658,2909],{"class":936},[598,3660,2912,3661,2916],{},[602,3662,2915],{},[2471,3664],{},[2464,3666,2922],{"id":2921},[598,3668,3669,2928],{},[602,3670,2927],{},[2019,3672,2931],{},{"title":676,"searchDepth":940,"depth":940,"links":3674},[],{},{"title":2460,"description":2934},1788035581890]