HTTPQUERY
Français

Origin

Utilisation

Les navigateurs joignent l’en-tête Origin aux requêtes multi-origines ainsi qu’aux requêtes de même origine déclenchées par certaines méthodes ou API. Cet en-tête identifie l’endroit d’où provient la requête, donnant au serveur les informations nécessaires pour appliquer ses politiques de contrôle d’accès.

L’en-tête apparaît dans toutes les requêtes CORS (y compris les préflights), les soumissions de formulaire utilisant POST, et les requêtes initiées par la Fetch API ou XMLHttpRequest. Le navigateur n’inclut pas l’en-tête dans les requêtes de navigation GET ou HEAD de même origine.

Contrairement à l’en-tête Referer, Origin n’inclut jamais le chemin ni la chaîne de requête, ce qui rend la valeur plus respectueuse de la vie privée. L’en-tête Sec-Fetch-Site fournit un signal complémentaire en classant la requête comme same-origin, same-site, cross-site ou none.

scheme://host:port

L’origine complète, composée du protocole, du nom d’hôte et du port. Le port est omis lorsque le protocole utilise un port par défaut (80 pour HTTP, 443 pour HTTPS).

Origin: https://example.com
Origin: https://api.example.re:8443

null

Envoyé lorsque l’origine est sensible du point de vue de la vie privée ou opaque. Les iframes en bac à sable, les URL data: et les redirections entre origines produisent une valeur null.

Origin: null

Remarque

Les serveurs qui s’appuient sur null pour le contrôle d’accès créent une faille de sécurité. Plusieurs contextes sans lien entre eux partagent la même origine null : faire confiance à cette valeur leur accorde donc l’accès à tous.

Exemple

Un POST multi-origine émis par une application front-end inclut l’en-tête Origin afin que le serveur vérifie l’appelant avant de renvoyer une réponse compatible CORS.

Requête

POST /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Content-Type: application/json

Réponse

HTTP/1.1 201 Created
Access-Control-Allow-Origin: https://shop.example.re
Vary: Origin

Une requête préflight OPTIONS transporte l’origine aux côtés de la méthode et des en-têtes envisagés.

Requête

OPTIONS /api/orders HTTP/1.1
Host: api.example.re
Origin: https://shop.example.re
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type