"सेम-साइट" और "समान-ऑरिजिन"

"एक ही साइट" और "एक ही ऑरिजिन" शब्दों का अक्सर इस्तेमाल किया जाता है. हालांकि, अक्सर इन शब्दों को गलत तरीके से समझा जाता है. उदाहरण के लिए, इनका इस्तेमाल पेज ट्रांज़िशन, fetch() अनुरोधों, कुकी, पॉप-अप खोलने, एम्बेड किए गए रिसॉर्स, और इफ़्रेम के संदर्भ में किया जाता है. इस पेज पर बताया गया है कि ये क्या हैं और ये एक-दूसरे से कैसे अलग हैं.

शुरुआत की जगह

शुरुआत की जगह
ऑरिजिन का स्ट्रक्चर.

"ऑरिजिन", स्कीम (इसे प्रोटोकॉल भी कहा जाता है, जैसे कि HTTP या HTTPS), होस्टनेम, और पोर्ट (अगर बताया गया हो) का कॉम्बिनेशन होता है. उदाहरण के लिए, https://www.example.com:443/foo का यूआरएल दिया गया है, तो "ऑरिजिन" https://www.example.com:443 है.

"एक ही सोर्स" और "अलग-अलग सोर्स"

जिन वेबसाइटों के स्कीम, होस्टनेम, और पोर्ट का कॉम्बिनेशन एक जैसा होता है उन्हें "एक ही ऑरिजिन" माना जाता है. बाकी सभी को "क्रॉस-ऑरिजिन" माना जाता है.

ऑरिजिन 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 एक ही सोर्स: पोर्ट नंबर (443) मैच करता है

साइट

साइट (TLD+1)
यूआरएल के वे हिस्से जिनसे साइट बनती है.

.com और .org जैसे टॉप लेवल डोमेन (टीएलडी), रूट ज़ोन डेटाबेस में शामिल होते हैं. पिछले
उदाहरण में, "साइट", स्कीम, TLD, और डोमेन के ठीक पहले के हिस्से (हम इसे TLD+1 कहते हैं) का कॉम्बिनेशन है. उदाहरण के लिए, https://www.example.com:443/foo का यूआरएल दिया गया है, तो "साइट" https://example.com है.

पब्लिक सफ़िक्स की सूची और ईटीएलडी

.co.jp या .github.io जैसे एलिमेंट वाले डोमेन के लिए, सिर्फ़ .jp या .io का इस्तेमाल करके "साइट" की पहचान नहीं की जा सकती. किसी खास टीएलडी के लिए, रजिस्टर किए जा सकने वाले डोमेन के लेवल का पता लगाने के लिए, एल्गोरिदम का इस्तेमाल नहीं किया जा सकता. इसकी मदद करने के लिए, सार्वजनिक सफ़िक्स की सूची में सार्वजनिक सफ़िक्स की सूची दी गई है. इन्हें इफ़ेक्टिव टीएलडी (eTLDs) भी कहा जाता है. 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 वाली वेबसाइटों को "एक ही साइट" माना जाता है. जिन वेबसाइटों का स्कीम या eTLD+1 अलग होता है उन्हें "क्रॉस-साइट" कहा जाता है.

ऑरिजिन 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 "बिना स्कीम वाला एक ही साइट" या "क्रॉस-साइट"?
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 स्कीमलेस सेम-साइट: पोर्ट का कोई फ़र्क़ नहीं पड़ता

यह कैसे पता लगाएं कि कोई अनुरोध "same-site", "same-origin" या "cross-site" है

Browser Support

  • Chrome: 76.
  • Edge: 79.
  • Firefox: 90.
  • Safari: 16.4.

Source

सभी मॉडर्न ब्राउज़र, Sec-Fetch-Site एचटीटीपी हेडर के साथ अनुरोध भेजते हैं. हेडर में इनमें से कोई एक वैल्यू हो सकती है:

  • cross-site
  • same-site (इसका मतलब है कि एक ही साइट पर स्कीमफ़ुल तरीके से ट्रैफ़िक भेजा जा रहा है)
  • same-origin
  • none

Sec-Fetch-Site की वैल्यू की जांच करके यह पता लगाया जा सकता है कि अनुरोध, एक ही साइट, एक ही ऑरिजिन या क्रॉस-साइट का है या नहीं.

Sec-Fetch-Site हेडर की वैल्यू पर भरोसा किया जा सकता है, क्योंकि: