Pourquoi avons-nous besoin d'Origin ?
Comme vous le savez probablement, il y a un en-tête HTTP Referer, qui contient généralement une URL de la page qui a initié une requête réseau.
Par exemple, lors de la récupération de http://google.com à partir de http://javascript.info/some/url, les en-têtes ressemblent à ceci :
Accept: */*
Accept-Charset: utf-8
Accept-Encoding: gzip,deflate,sdch
Connection: keep-alive
Host: google.com
Origin: http://javascript.info
Referer: http://javascript.info/some/url
Comme vous pouvez le voir, Referer et Origin sont présents.
Questions :
- Pourquoi
Originest nécessaire, siReferera encore plus d’informations ? - Est-il possible qu’il n’y ait pas de
RefererouOrigin, ou est-ce incorrect ?
Nous avons besoin de Origin, car parfois Referer est absent. Par exemple, lorsque nous faisons un fetch de la page HTTP à partir de la page HTTPS (accès moins sécurisé de plus sécurisé), il n’y a pas de Referer.
Le Content Security Policy peut interdire l’envoi d’un Referer.
Comme nous le verrons, fetch a des options qui empêchent d’envoyer le Referer et permettent même de le changer (dans le même site).
Par spécification, Referer est un en-tête HTTP facultatif.
Précisément parce que Referer n’est pas fiable, Origin a été inventé. Le navigateur garantit une origine correcte pour les requêtes cross-origin.