Origin
======

 L'en-tête de requête **`Origin`** indique l'origine (c'est-à-dire le schéma, le nom d'hôte et le port) qui a *déclenché* la requête.
 Ainsi, si un agent utilisateur doit demander les ressources incluses dans une page ou récupérer les scripts exécutés sur cette page, l'origine de la page courante peut alors être incluse dans la requête.


|  |  |
| --- | --- |
| Type d'en-tête | En-tête de requête |
| Nom d'en-tête interdit | Oui |

Syntaxe
-------


```http
Origin: null
Origin: <schema>://<nomhote>
Origin: <schema>://<nomhote>:<port>
```

Directives
----------

`null`

L'origine doit être protégée pour des raisons de confidentialité ou il s'agit d'une *origine opaque*, telle que définie par la spécification HTML (les cas correspondants sont décrits dans la section description ci-après).

`<schema>`

Le protocole utilisé. Il s'agit généralement de HTTP ou de HTTPS.

`<nomhote>`

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 `443` pour 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`. On l'utilise pour fournir le « contexte de sécurité » de la requête d'origine, sauf dans les cas où l'information de l'origine est superflue ou sensible pour des questions de vie privée.

Au sens large, les agents utilisateurs envoient l'en-tête `Origin` avec les requêtes :

* D'origines multiples (*cross origin* en anglais).
* De même origine, sauf pour les requêtes utilisant les méthodes `GET` ou `HEAD` (autrement dit, cet en-tête est utilisé pour les requêtes avec la méthode `POST`, `OPTIONS`, `PUT`, `PATCH`, et `DELETE`).

Il existe certaines exceptions aux règles précédentes. Par exemple, lorsqu'une requête `GET` ou `HEAD` est effectuée en mode `no-cors`, l'en-tête `Origin` ne sera pas ajouté.

L'en-tête `Origin` peut valoir `null` dans certains cas (la liste qui suit n'est pas exhaustive) :

* Le schéma de l'origine n'est pas `http`, `https`, `ftp`, `ws`, `wss`, ou `gopher` (y compris `blob`, `file` et `data`).
* La requête porte sur des médias d'origines multiples, par exemple via les éléments `<img>`, `<video>` et `<audio>`.
* Pour les documents créés via un programme à l'aide de `createDocument()`, ou générés à partir d'une URL `data:`, ou qui n'ont pas de contexte de navigation créateur.
* Pour les redirections entre les origines.
* Pour les éléments `<iframe>` dont l'attribut `sandox` ne contient pas la valeur `allow-same-origin`.
* Pour les réponses qui sont des erreurs réseau.

**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 `Origin` ? Quand l'origine est-elle mise à `null` ? (en anglais)

Exemples
--------


```http
Origin: https://developer.mozilla.org
```



```http
Origin: http://developer.mozilla.org:80
```

Spécifications
--------------

| Specification |
| --- |
| The Web Origin Concept # section-7 |
| Fetch Standard # origin-header |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Host`
* `Referer`
* Politique de même origine
* Quand les navigateurs envoient-ils l'en-tête `Origin` ? Quand l'origine est-elle mise à `null` ? (question Stack Overflow, en anglais)