"aynı site" ve "aynı kaynak" terimleri sık sık alıntılanan ancak genellikle yanlış anlaşılan terimlerdir. Örneğin, bunlardan sayfa geçişleri, fetch()
istekleri, çerezler, açılış pop-up'ları, yerleştirilmiş kaynaklar ve iframe'ler bağlamında bahsedilir.
Köken
"Kaynak", şema (belirtilirse) protokol olarak da bilinir; örneğin, HTTP veya HTTPS olarak da bilinir), ana makine adı ve bağlantı noktası'nın (belirtilmişse) kombinasyonudur. Örneğin, https://www.example.com:443/foo
URL'si verildiğinde "kaynak" https://www.example.com:443
olur.
"aynı-kaynak" ve "çapraz-kaynak"
Aynı şema, ana makine adı ve bağlantı noktası kombinasyonuna sahip web siteleri "aynı kaynak" olarak kabul edilir. Diğer her şey "kaynaklar arası" olarak kabul edilir.
Kaynak A | Kaynak B | Kaynak A ve B'nin "aynı kaynak" mı yoksa "çapraz kaynak" mı olduğuna ilişkin açıklama |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | cross-origin: farklı alan adları |
https://example.com:443 | cross-origin: farklı alt alan adları | |
https://giriş.example.com:443 | cross-origin: farklı alt alan adları | |
http://www.example.com:443 | cross-origin: farklı şemalar | |
https://www.example.com:80 | cross-origin: farklı bağlantı noktaları | |
https://www.example.com:443 | same-origin: tam eşleme | |
https://www.example.com | same-origin: implicit bağlantı noktası numarası (443) ile eşleşir |
Site
.com
ve .org
gibi üst düzey alanlar (TLD'ler), Kök Bölge Veritabanı'nda listelenir. Yukarıdaki örnekte "site"; şema, TLD ve alan adının kendisinden hemen önceki bölümünün (buna TLD+1 deriz) birleşimidir. Örneğin, https://www.example.com:443/foo
URL'si verildiğinde "site" https://example.com
olur.
Genel Son Ek Listesi ve eTLD
.co.jp
veya .github.io
gibi öğeleri içeren alanlar için sadece .jp
ya da .io
kullanımı "siteyi" tanımlamak için yeterince ayrıntılı değildir. Belirli bir TLD için kaydedilebilir alan düzeyini algoritmik olarak belirlemenin bir yolu yoktur.
Bu nedenle Genel Son Ek Listesi'nde tanımlanan genel son eklerin bir listesi oluşturuldu. Bu herkese açık sonekler, etkili TLD'ler (eTLD) olarak da adlandırılır. eTLD listesi publicsuffix.org/list adresinde mevcuttur.
eTLD içeren bir alanın "site" bölümünü tanımlamak için .com
örneğiyle aynı uygulamayı uygulayın. Örneğin https://www.project.github.io:443/foo
, şema https
, eTLD .github.io
ve eTLD+1 project.github.io
şeklindedir. Dolayısıyla https://project.github.io
, bu URL için "site" olarak kabul edilir.
"aynı-site" ve "siteler arası"
Aynı şemaya ve aynı eTLD+1'e sahip web siteleri "aynı site" olarak kabul edilir. Farklı bir şema veya farklı bir eTLD+1'e sahip web siteleri, "siteler arası"dır.
Kaynak A | Kaynak B | A ve B Kaynaklarının "aynı site" mi yoksa "siteler arası" mı olduğuna ilişkin açıklama |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | cross-site: farklı etki alanları |
https://giriş.example.com:443 | same-site: Farklı alt alan adları önemli değildir | |
http://www.example.com:443 | cross-site: farklı şemalar | |
https://www.example.com:80 | same-site: Farklı bağlantı noktaları önemli değildir | |
https://www.example.com:443 | same-site: tam eşleme | |
https://www.example.com | same-site: "Bağlantı noktaları önemli değildir |
"ayrıntısız aynı site"
"Aynı site" tanımı, HTTP'nin zayıf kanal olarak kullanılmasını önlemek için URL şemasını sitenin bir parçası olarak kabul edecek şekilde değişti.
Şema karşılaştırması içermeyen eski "aynı site" kavramı artık "Şemasız aynı site" olarak adlandırılıyor. Örneğin, yalnızca eTLD+1 kısmı önemli olduğundan ve şema dikkate alınmadığından http://www.example.com
ve https://www.example.com
, şemasız aynı site olarak kabul edilir ancak aynı site değildir.
Kaynak A | Kaynak B | Kaynak A ve B'nin "şablonsuz aynı site" olup olmadığının açıklaması |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | cross-site: farklı etki alanları |
https://giriş.example.com:443 | schemeless same-site: farklı alt alan adları fark etmez | |
http://www.example.com:443 | schemeless same-site: farklı şemalar fark etmez | |
https://www.example.com:80 | schemeless same-site: farklı bağlantı noktaları önemli değildir | |
https://www.example.com:443 | schemeless same-site: tam eşleme | |
https://www.example.com | schemeless same-site: bağlantı noktaları önemli değildir |
İsteğin "aynı site", "aynı kaynak" veya "siteler arası" olup olmadığını kontrol etme
Tüm modern tarayıcılar (Safari, yakında açılış özelliğini destekler) istekleri bir Sec-Fetch-Site
HTTP üst bilgisi ile birlikte gönderir. Başlık aşağıdaki değerlerden birine sahiptir:
cross-site
same-site
same-origin
none
Sec-Fetch-Site
değerini inceleyerek isteğin "aynı site", "aynı kaynak" veya "siteler arası" olma durumunu belirleyebilirsiniz.