"एक ही साइट" और "एक ही मूल" के लिए बार-बार उद्धरण दिया गया है, लेकिन अक्सर इनका गलत मतलब निकाला जाता है. उदाहरण के लिए, इनका ज़िक्र पेज ट्रांज़िशन, fetch()
अनुरोधों, कुकी, पॉप-अप खोलने, एम्बेड किए गए रिसॉर्स, और iframe के संदर्भ में किया जाता है.
शुरुआत की जगह
"ऑरिजिन", एक स्कीम (जिसे
प्रोटोकॉल भी कहा जाता है, जैसे कि एचटीटीपी या एचटीटीपीएस), होस्टनेम, और पोर्ट (अगर इनके बारे में बताया गया हो) का कॉम्बिनेशन होता है. उदाहरण के लिए, https://www.example.com:443/foo
का यूआरएल दिया गया है,
तो "ऑरिजिन" https://www.example.com:443
है.
"समान-शुरुआत की जगह" और "क्रॉस-ऑरिजिन"
एक ही स्कीम, होस्टनेम, और पोर्ट के कॉम्बिनेशन वाली वेबसाइटों को "एक ही ऑरिजिन" माना जाता है. बाकी सब कुछ "क्रॉस-ऑरिजिन" माना जाता है.
शुरुआत की जगह A | ऑरिजिन B | यह पता लगाने के लिए कि ऑरिजिन A और B, "एक ही ऑरिजिन" हैं या "क्रॉस-ऑरिजिन" |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | क्रॉस-ऑरिजिन: अलग-अलग डोमेन |
https://example.com:443 | क्रॉस-ऑरिजिन: अलग-अलग सबडोमेन | |
https://login.example.com:443 | क्रॉस-ऑरिजिन: अलग-अलग सबडोमेन | |
http://www.example.com:443 | क्रॉस-ऑरिजिन: अलग-अलग स्कीम | |
https://www.example.com:80 | क्रॉस-ऑरिजिन: अलग-अलग पोर्ट | |
https://www.example.com:443 | एक ही-ऑरिजिन: एग्ज़ैक्ट मैच | |
https://www.example.com | same-origin: इंप्लिसिट पोर्ट नंबर (443) मैच होता है |
साइट
.com
और .org
जैसे टॉप लेवल डोमेन (टीएलडी) रूट ज़ोन डेटाबेस में शामिल हैं. ऊपर दिए गए उदाहरण में, "साइट", स्कीम, टीएलडी, और डोमेन के ठीक पहले वाले हिस्से का कॉम्बिनेशन है (हम इसे TLD+1 कहते हैं). उदाहरण के लिए, अगर https://www.example.com:443/foo
यूआरएल दिया गया है , तो "साइट" https://example.com
है.
सार्वजनिक सफ़िक्स सूची और ईटीएलडी
जिन डोमेन में .co.jp
या .github.io
जैसी चीज़ें शामिल हैं उनके लिए, "साइट" की पहचान करने के लिए सिर्फ़ .jp
या .io
का इस्तेमाल करना काफ़ी नहीं है. किसी खास टीएलडी के लिए, रजिस्टर किए जा सकने वाले डोमेन का लेवल, एल्गोरिदम के हिसाब से तय करने का कोई तरीका नहीं है.
इसलिए, सार्वजनिक सफ़िक्स सूची में तय किए गए पब्लिक सफ़िक्स की एक सूची बनाई गई. इन पब्लिक सफ़िक्स को असरदार टीएलडी (ईटीएलडी) भी कहा जाता है. ईटीएलडी की सूची publicsuffix.org/list पर दी गई है.
जिस डोमेन में ई-टीएलडी शामिल है उसके "साइट" वाले हिस्से की पहचान करने के लिए, .com
वाले उदाहरण जैसा ही लागू करें. https://www.project.github.io:443/foo
का उदाहरण लेते हैं, स्कीम https
है, eTLD .github.io
है, eTLD+1 project.github.io
है, इसलिए https://project.github.io
को इस यूआरएल के लिए "साइट" माना गया है.
"एक ही साइट" और "क्रॉस-साइट"
एक जैसी स्कीम और एक ही eTLD+1 वाली वेबसाइटों को "एक ही साइट" माना जाता है. अलग स्कीम या अलग eTLD+1 वाली वेबसाइटें, "क्रॉस-साइट" होती हैं.
शुरुआत की जगह A | ऑरिजिन B | यह पता लगाने के लिए कि ऑरिजिन A और B, "एक ही साइट" हैं या "क्रॉस-साइट" |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | क्रॉस-साइट: अलग-अलग डोमेन |
https://login.example.com:443 | एक ही साइट: अलग-अलग सबडोमेन से कोई फ़र्क़ नहीं पड़ता | |
http://www.example.com:443 | क्रॉस-साइट: अलग-अलग योजनाएं | |
https://www.example.com:80 | एक ही साइट: अलग-अलग पोर्ट से कोई फ़र्क़ नहीं पड़ता | |
https://www.example.com:443 | एक ही साइट: एग्ज़ैक्ट मैच | |
https://www.example.com | एक ही साइट: पोर्ट से कोई फ़र्क़ नहीं पड़ता |
"एक ही साइट के लिए बिना किसी विज्ञापन की तकनीक"
"सेम-साइट" की परिभाषा को इस तरह से बेहतर बनाया गया है कि यूआरएल स्कीम को साइट का हिस्सा माना जाए. ऐसा इसलिए किया जाता है, ताकि एचटीटीपी को कमज़ोर चैनल के तौर पर इस्तेमाल न किया जा सके.
स्कीम की तुलना के बिना "एक ही साइट" के पुराने सिद्धांत को अब "बिना स्कीम वाली समान साइट" कहा जाता है. उदाहरण के लिए, http://www.example.com
और
https://www.example.com
को एक ही साइट के लिए स्कीमलेस माना जाता है, लेकिन एक ही साइट का नहीं.
ऐसा इसलिए, क्योंकि सिर्फ़ eTLD+1 वाला हिस्सा मायने रखता है और स्कीम पर ध्यान नहीं दिया जाता.
शुरुआत की जगह A | ऑरिजिन B | यह पता करना कि क्या मूल A और B "समान साइट" हैं या नहीं |
---|---|---|
https://www.example.com:443 | https://www.evil.com:443 | क्रॉस-साइट: अलग-अलग डोमेन |
https://login.example.com:443 | एक जैसी साइट: अलग-अलग सबडोमेन से कोई फ़र्क़ नहीं पड़ता | |
http://www.example.com:443 | एक ही साइट में बिना किसी बदलाव वाली साइट: अलग-अलग स्कीम से कोई फ़र्क़ नहीं पड़ता | |
https://www.example.com:80 | एक ही साइट में बिना स्कीम वाले: अलग-अलग पोर्ट से कोई फ़र्क़ नहीं पड़ता | |
https://www.example.com:443 | एक ही साइट के बिना स्कीम: एग्ज़ैक्ट मैच | |
https://www.example.com | एक ही साइट में बिना स्कीम वाले: पोर्ट से कोई फ़र्क़ नहीं पड़ता |
यह कैसे पता करें कि अनुरोध "एक ही साइट", "एक ही-शुरुआत" या "क्रॉस-साइट" है या नहीं
सभी आधुनिक ब्राउज़र (Safari पर जल्द ही लैंडिंग काम करता है) Sec-Fetch-Site
एचटीटीपी हेडर के साथ अनुरोध भेजते हैं. हेडर में, इनमें से कोई एक वैल्यू होनी चाहिए:
cross-site
same-site
same-origin
none
Sec-Fetch-Site
की वैल्यू की जांच करके, यह पता लगाया जा सकता है कि अनुरोध, "same-site", "same-origin" या "क्रॉस-साइट" में से क्या है.