Bases des technologies web

Le JavaScript d'une page de https://app.example.com veut envoyer avec fetch une requête POST vers https://api.example.net/orders, avec un corps de type Content-Type: application/json. Quel comportement de CORS est correct dans ce cas ?

  1. ACORS agit aussi en dehors des navigateurs : sans autorisation du serveur, même un POST envoyé par un outil en ligne de commande est bloqué en chemin sur le réseau
  2. BLe navigateur envoie d'abord une vérification préalable (preflight) avec la méthode OPTIONS, et n'envoie le véritable POST que si le serveur renvoie l'autorisation dans ses en-têtes
  3. CLes requêtes vers une autre origine sont toujours envoyées sans vérification, et le JavaScript de la page peut lire la réponse même si le serveur n'y ajoute rien
Afficher la réponse et l'explication

Réponse : B. Le navigateur envoie d'abord une vérification préalable (preflight) avec la méthode OPTIONS, et n'envoie le véritable POST que si le serveur renvoie l'autorisation dans ses en-têtes

CORS est un mécanisme qui permet, dans les limites autorisées par le serveur, les requêtes vers d'autres origines et la lecture de leurs réponses, restreintes par la politique de même origine. Un POST avec Content-Type: application/json est un type de requête qu'un simple envoi de formulaire ne peut pas produire ; le navigateur commence donc par une requête OPTIONS qui indique la méthode et les en-têtes utilisés, afin de vérifier l'autorisation. Si la réponse du serveur ne contient pas d'autorisation comme Access-Control-Allow-Origin, le navigateur n'envoie pas la véritable requête. CORS est une règle appliquée par les navigateurs : le serveur doit donc se protéger par ailleurs, par l'authentification et la vérification des droits.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des technologies web

  1. Quelle description d'un Service Worker est correcte ?
  2. Dans une page en responsive design adaptée aussi aux smartphones, quel est le but principal d'écrire <meta name="viewport" content="width=device-width, initial-scale=1"> dans <head> ?
  3. On ajoute Cache-Control: private, max-age=60 à la réponse d'une page « Mon compte » dont le contenu diffère selon l'utilisateur. Quel est l'effet correct de cette directive ?
  4. Lorsqu'un serveur web compresse ses réponses avec gzip ou Brotli, pour quel type de contenu la réduction du volume transféré est-elle généralement la plus faible ?
  5. On envoie 1,5 MB de données texte, compressées par gzip au tiers de leur taille. La bande passante est de 10 Mbit/s et le RTT de 100 ms ; avant de commencer à envoyer les données, la connexion TCP, la poignée de main TLS et la requête HTTP prennent ensemble 3 allers-retours. On prend 1 MB = 10^6 octets et l'on néglige le temps de compression et de décompression, les en-têtes et les attentes dues au contrôle de congestion de TCP. Quelle valeur est la plus proche du temps nécessaire pour finir de recevoir les données ?