„same-site“ und „same-origin“ werden häufig zitiert, aber oft missverstanden. Sie werden beispielsweise im Zusammenhang mit Seitenübergängen, fetch()
-Anfragen, Cookies, Pop-ups, eingebetteten Ressourcen und iFrames erwähnt.
Ursprung
Der „Ursprung“ ist eine Kombination aus einem Schema (auch Protokoll, z. B. HTTP oder HTTPS), eines Hostnamen und eines Ports (falls angegeben). Bei der URL https://www.example.com:443/foo
ist der „origin“ z. B. https://www.example.com:443
.
„same-origin“ und „cross-origin“
Websites mit einer Kombination aus demselben Schema, Hostnamen und Port werden als „Same-Origin“ betrachtet. Alles andere wird als ursprungsübergreifend betrachtet.
Abflugort A | Abflugort B | Erklärung, ob die Abfahrtsorte A und B „same-origin“ oder „cross-origin“ sind |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | ursprungsübergreifend: verschiedene Domains |
https://example.com:443 | ursprungsübergreifend: verschiedene Subdomains | |
https://login.beispiel.de:443 | ursprungsübergreifend: verschiedene Subdomains | |
http://www.beispiel.de:443 | ursprungsübergreifend: verschiedene Schemas | |
https://www.beispiel.de:80 | Cross-Origin: verschiedene Ports | |
https://www.beispiel.de:443 | same-origin: genau passend | |
https://www.example.com | same-origin: Implizite Portnummer (443) stimmt überein |
Website
Top-Level-Domains (TLDs) wie .com
und .org
werden in der Stammzonendatenbank aufgeführt. Im Beispiel oben ist "site" die Kombination aus dem Schema, der TLD und dem Teil der Domain unmittelbar davor (er: TLD+1). Wenn die URL beispielsweise https://www.example.com:443/foo
lautet, ist die „Website“ https://example.com
.
Liste der öffentlichen Suffixe und eTLD
Bei Domains, die Dinge wie .co.jp
oder .github.io
enthalten, reicht es nicht aus, nur .jp
oder .io
zu verwenden, um die „Website“ zu identifizieren. Es gibt keine Möglichkeit, die Ebene der registrierfähigen Domains für eine bestimmte TLD mithilfe eines Algorithmus zu bestimmen.
Aus diesem Grund wurde eine Liste öffentlicher Suffixe erstellt, die in der Liste der öffentlichen Suffixe definiert sind. Diese öffentlichen Suffixe werden auch als effektive TLDs (eTLDs) bezeichnet. Die Liste der eTLDs wird unter publicsuffix.org/list verwaltet.
Um den „Website“-Teil einer Domain mit einer eTLD zu ermitteln, gehen Sie genauso vor wie im Beispiel mit .com
. Nehmen wir https://www.project.github.io:443/foo
als Beispiel: Das Schema ist https
, die eTLD ist .github.io
und die eTLD+1 ist project.github.io
. https://project.github.io
wird also als „Website“ für diese URL betrachtet.
„same-site“ und „cross-site“
Websites mit demselben Schema und derselben eTLD+1 gelten als „same-site“. Websites mit einem anderen Schema oder einer anderen eTLD+1 sind „websiteübergreifend“.
Abflugort A | Abflugort B | Erklärung, ob Ursprung A und Ursprung B „same-site“ oder „cross-site“ sind |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | websiteübergreifend: verschiedene Domains |
https://login.beispiel.de:443 | same-site: unterschiedliche Subdomains spielen keine Rolle | |
http://www.beispiel.de:443 | websiteübergreifend: verschiedene Schemas | |
https://www.beispiel.de:80 | same-site: unterschiedliche Ports spielen keine Rolle | |
https://www.beispiel.de:443 | same-site: genau passend | |
https://www.example.com | same-site: Ports spielen keine Rolle |
„Schemalose Website derselben Website“
Die Definition von „same-site“ wurde weiterentwickelt, um das URL-Schema als Teil der Website zu betrachten, um zu verhindern, dass HTTP als wechslungsreicher Channel verwendet wird.
Das ältere Konzept von „same-site“ ohne Schemavergleich heißt jetzt „schemaless same-site“. Beispielsweise werden http://www.example.com
und https://www.example.com
als schemalose Same-Site-, aber nicht als Same-Site-Website betrachtet, da nur der eTLD+1-Teil relevant ist und das Schema nicht berücksichtigt wird.
Abflugort A | Abflugort B | Erklärung, ob die Ursprünge A und B „schemaloser Same-Site“ sind |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | websiteübergreifend: verschiedene Domains |
https://login.beispiel.de:443 | Schemalose Website für dieselbe Website: Unterschiedliche Subdomains spielen keine Rolle | |
http://www.beispiel.de:443 | Schemalose Website derselben Website: Unterschiedliche Schemas spielen keine Rolle | |
https://www.beispiel.de:80 | schemeless-same-site: unterschiedliche Ports spielen keine Rolle | |
https://www.beispiel.de:443 | schemeless-same-site: genau passend | |
https://www.example.com | schemeless-same-site: Ports spielen keine Rolle |
Prüfen, ob eine Anfrage „same-site“, „same-origin“ oder „cross-site“ ist
Alle modernen Browser (Safari unterstützen Demnächst) senden Anfragen zusammen mit einem Sec-Fetch-Site
-HTTP-Header. Der Header hat einen der folgenden Werte:
cross-site
same-site
same-origin
none
Wenn Sie den Wert von Sec-Fetch-Site
untersuchen, können Sie feststellen, ob die Anfrage „same-site“, „same-origin“ oder „cross-site“ ist.