Les termes "même site" et "même origine" sont fréquemment cités, mais souvent mal compris. Par exemple, ils sont utilisés dans le contexte des transitions de page, des requêtes fetch()
, des cookies, de l'ouverture de pop-ups, des ressources intégrées et des iFrames. Cette page explique ce qu'ils sont et en quoi ils diffèrent les uns des autres.
Origine

"Origin" est une combinaison d'un schéma (également appelé protocole, par exemple HTTP ou HTTPS), d'un nom d'hôte et d'un port (le cas échéant). Par exemple, pour l'URL https://www.example.com:443/foo
, l'origine est https://www.example.com:443
.
"même origine" et "origine différente"
Les sites Web qui ont la même combinaison de schéma, de nom d'hôte et de port sont considérés comme "de même origine". Tout le reste est considéré comme "cross-origin".
Origine A | Origine B | "Same-origin" ou "cross-origin" ? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Multidomaine: différents domaines |
https://example.com:443 | Multi-origine: différents sous-domaines | |
https://login.example.com:443 | Multi-origine: différents sous-domaines | |
http://www.example.com:443 | Multi-origine: différents schémas | |
https://www.example.com:80 | Multi-origine: ports différents | |
https://www.example.com:443 | Même origine: mot clé exact | |
https://www.example.com | Same-origin: le numéro de port implicite (443) correspond |
Site

Les domaines de premier niveau (TLD) tels que .com
et .org
sont listés dans la base de données de la zone racine. Dans l'exemple
précédent, "site" est une combinaison du schéma, du TLD et de la partie du domaine juste avant (que nous appelons TLD+1). Par exemple, pour l'URL https://www.example.com:443/foo
, le "site" correspond à https://example.com
.
Liste de suffixes publics et eTLD
Pour les domaines contenant des éléments tels que .co.jp
ou .github.io
, l'utilisation de .jp
ou .io
n'est pas assez précise pour identifier le "site". Il n'existe aucun moyen de déterminer de manière algorithmique le niveau de domaines enregistrables pour un TLD donné.
Pour vous aider, la liste de suffixes publics définit une liste de suffixes publics, également appelés TLD (eTLD). La liste des eTLD est disponible sur publicsuffix.org/list.
Pour identifier la partie "site" d'un domaine qui inclut un domaine de premier niveau international, appliquez la même pratique que l'exemple avec .com
. Prenons https://www.project.github.io:443/foo
comme exemple. Le schéma est https
, l'eTLD est .github.io
et l'eTLD+1 est project.github.io
. https://project.github.io
est donc considéré comme le "site" de cette URL.

"same-site" et "cross-site"
Les sites Web qui ont le même schéma et le même eTLD+1 sont considérés comme "de même site". Les sites Web qui utilisent un schéma ou un eTLD+1 différents sont "intersites".
Origine A | Origine B | "Same-site" ou "cross-site" ? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Multisite: différents domaines |
https://login.example.com:443 | Same-site: les sous-domaines différents n'ont pas d'importance | |
http://www.example.com:443 | Intersites: différents schémas | |
https://www.example.com:80 | Same-site: les ports différents n'ont pas d'importance | |
https://www.example.com:443 | Same-site: mot clé exact | |
https://www.example.com | Same-site: les ports n'ont pas d'importance |
"Same-site sans schéma"

La définition de "same-site" a été modifiée pour inclure le schéma d'URL dans le site afin d'empêcher l'utilisation de HTTP comme canal faible.
L'ancien concept de "même site" sans comparaison de schémas est désormais appelé "même site sans schéma". Par exemple, http://www.example.com
et https://www.example.com
sont considérés comme des mêmes sites sans schéma, mais pas comme des mêmes sites, car seule la partie eTLD+1 est importante et le schéma n'est pas pris en compte.
Origine A | Origine B | "Same-site sans schéma" ou "cross-site" ? |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | Multisite: différents domaines |
https://login.example.com:443 | Même site sans schéma: les sous-domaines différents n'ont pas d'importance | |
http://www.example.com:443 | Same-site sans schéma: les différents schémas n'ont pas d'importance | |
https://www.example.com:80 | Same-site sans schéma: les ports différents n'ont pas d'importance | |
https://www.example.com:443 | Same-site sans schéma: correspondance exacte | |
https://www.example.com | Same-site sans schéma: les ports n'ont pas d'importance |
Vérifier si une requête est de type "same-site", "same-origin" ou "cross-site"
Tous les navigateurs modernes envoient des requêtes avec un en-tête HTTP Sec-Fetch-Site
.
L'en-tête a l'une des valeurs suivantes:
cross-site
same-site
(fait référence à la méthode same-site avec schéma)same-origin
none
Vous pouvez examiner la valeur de Sec-Fetch-Site
pour déterminer si la requête est de type "same-site", "same-origin" ou "cross-site".
Vous pouvez raisonnablement faire confiance à la valeur de l'en-tête Sec-Fetch-Site
, car:
- Les en-têtes HTTP commençant par
Sec-
ne peuvent pas être modifiés par JavaScript. - Le navigateur définit toujours ces titres.