En-tête Origin
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2020.
L'en-tête de requête HTTP Origin indique l'origine (schéma, nom d'hôte et port) à l'origine de la requête.
Par exemple, si un agent utilisateur doit demander des ressources incluses dans une page, ou récupérées par des scripts qu'il exécute, alors l'origine de la page peut être incluse dans la requête.
| Type d'en-tête | En-tête de requête |
|---|---|
| En-tête de requête interdit | Oui |
Syntaxe
Origin: null
Origin: <scheme>://<hostname>
Origin: <scheme>://<hostname>:<port>
Directives
null-
L'origine doit être protégée pour des raisons de confidentialité ou il s'agit d'une origine opaque (les cas correspondants sont décrits dans la section description ci-après).
<scheme>-
Le protocole utilisé. Il s'agit généralement de HTTP ou de HTTPS.
<hostname>-
Le nom de domaine ou l'adresse IP du serveur d'origine.
<port>Facultatif-
Le numéro de port sur lequel écoute le serveur. Si aucun port n'est donné, c'est le port par défaut pour le protocole correspondant qui est utilisé (par exemple
443pour une URL qui utiliserait le protocole HTTPS).
Description
L'en-tête Origin est semblable à l'en-tête Referer, mais ne contient pas le chemin de la ressource et peut valoir null.
Il est utilisé pour fournir le contexte de sécurité de la requête d'origine, sauf dans les cas où l'information de l'origine serait sensible ou superflue.
De façon générale, les agents utilisateurs ajoutent l'en-tête de requête Origin aux :
- Requêtes inter-origine.
- Requêtes de même origine, sauf pour les requêtes
GETouHEAD(c'est-à-dire qu'il est ajouté aux requêtes de même originePOST,OPTIONS,PUT,PATCHetDELETE).
Il existe quelques exceptions à ces règles ; par exemple, si une requête GET ou HEAD d'origine croisée est effectuée en mode no-cors, l'en-tête Origin ne sera pas ajouté.
La valeur de l'en-tête Origin peut être null dans un certain nombre de cas, notamment (liste non exhaustive) :
- Les origines dont le schéma n'est pas
http,https,ftp,ws,wssougopher(y comprisblob,fileetdata). - Les images et données multimédias d'origine croisée, y compris celles dans les éléments HTML
<img>,<video>et<audio>. - Les documents créés par programme à l'aide de
createDocument(), générés à partir d'une URLdata:, ou qui n'ont pas de contexte de navigation créateur. - Les redirections entre origines.
- Les documents servis avec la directive
sandboxdeContent-Security-Policydont la valeur n'inclut pasallow-same-origin. - Les cadres intégrés avec un attribut sandbox dont la valeur n'inclut pas
allow-same-origin. - Les réponses qui sont des erreurs réseau.
Referrer-Policydéfini àno-referrerpour les modes de requête non-cors(par exemple, les envois de formulaires basiques).
Note :
Une liste plus détaillée de ces cas avec null est présentée sur Stack Overflow : Quand les navigateurs envoient-ils l'en-tête d'origine ? Quand l'origine est-elle mise à nul ? (angl.)
Exemples
Origin: https://developer.mozilla.org
Origin: https://developer.mozilla.org:80
Spécifications
| Specification |
|---|
| The Web Origin Concept> # section-7> |
| Fetch> # origin-header> |