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

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

शुरुआत की जगह

शुरुआत की जगह
शुरुआत की जगह.

"ऑरिजिन", एक स्कीम (जिसे प्रोटोकॉल भी कहा जाता है, जैसे कि एचटीटीपी या एचटीटीपीएस), एक होस्टनेम, और एक पोर्ट (अगर इसकी जानकारी दी गई हो) का कॉम्बिनेशन है. उदाहरण के लिए, 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 जैसे टॉप लेवल डोमेन (टीएलडी) रूट ज़ोन डेटाबेस में शामिल हैं. पिछले
उदाहरण में, "site" स्कीम, टीएलडी, और डोमेन के ठीक पहले के हिस्से का मिला-जुला रूप है (हम इसे 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 वाली वेबसाइटों को "एक ही साइट" माना जाता है. अलग स्कीम या अलग 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 एक ही साइट में बिना स्कीम: पोर्ट से कोई फ़र्क़ नहीं पड़ता

यह कैसे पता करें कि अनुरोध "एक ही साइट", "एक ही-शुरुआत" या "क्रॉस-साइट" है या नहीं

ब्राउज़र सहायता

  • 76
  • 79
  • 90
  • 78 जीबी में से

सोर्स

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

  • cross-site
  • same-site (एक ही साइट के स्कीम वाले प्लान का मतलब है)
  • same-origin
  • none

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

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