2009-09-13 8 views
10

क्या कोई कुकी सेट करने का कोई तरीका है सबडोमेन पर पठनीय नहीं है? दूसरे शब्दों में, कुकी को domain.com पर उपलब्ध है, लेकिन www.domain.com या xyz.domain.com पर उपलब्ध है।डोमेन के लिए PHP setcookie() subdomains

//this is what i'm "intending"... 
setcookie($name,$value,$expires,'/','domain.com'); 
//however, this is how it behaves: 
setcookie($name,$value,$expires,'/','.domain.com'); 

तर्क: मैं एक उप डोमेन पर एक स्थिर CDN सेट कर रहा हूं और उपयोगकर्ता सत्र कुकीज़ आगे और पीछे जाने वाला प्रत्येक चित्र, सीएसएस फ़ाइल, जे एस फ़ाइल के लिए जा नहीं करना चाहती, आदि

... क्या मुझे अपनी साइट के लिए www.domain.com का उपयोग करने के लिए वापस आना है? क्या कोई कामकाज है?

+0

डोमेन को 'शून्य' पर सेट करना यहां करने के लिए एकमात्र सही चीज है। अन्यथा, आपको ['$ कुकी-> सेटडोमेन ($ डोमेन)'] मिल सकता है (https://github.com/delight-im/PHP-Cookie/blob/004cde69ec840e65c15275e09b92ecb1da06f357/src/Cookie.php#L117) सहायक, जैसा कि [इस स्टैंडअलोन लाइब्रेरी] में पाया गया (https://github.com/delight-im/PHP- कुकी)। – caw

उत्तर

17

जाहिर है, "domain.com" पर एक कुकी होने से "* .domain.com" से मिलान होगा व्यवहार की उम्मीद है।

उदाहरण के लिए: PERSISTENT CLIENT STATE HTTP COOKIES राज्य (कुछ जोर मेरा):

domain=DOMAIN_NAME

जब वैध कुकीज़, कुकी के डोमेन विशेषताओं का एक तुलना के लिए कुकी सूची खोज के इंटरनेट डोमेन नाम के साथ बनाया गया होस्ट जिस से यूआरएल लाया जाएगा। ...
"पूंछ मिलान" का अर्थ है कि डोमेन विशेषता पूरी तरह से होस्ट के योग्य डोमेन नाम की पूंछ के विरुद्ध मेल खाती है। ए "acme.com" का डोमेन विशेषता मिलान होस्ट नाम "anvil.acme.com" के रूप में अच्छी तरह से "shipping.crate.acme.com" के रूप में होगा। निर्दिष्ट डोमेन भीतर

केवल मेजबान एक डोमेन के लिए एक कुकी सेट कर सकते हैं और डोमेन होना आवश्यक है कम से कम दो (2) या तीन (3) अवधि उन में को प्रपत्र के डोमेन को रोकने: "। कॉम ", " .edu ", और" va.us "। कोई भी डोमेन जो नीचे दिए गए सात विशेष शीर्ष स्तर डोमेन में से एक के भीतर विफल रहता है, केवल को दो अवधि की आवश्यकता होती है। कोई अन्य डोमेन कम से कम तीन की आवश्यकता है। सात विशेष शीर्ष स्तर डोमेन हैं: "COM", "EDU", "नेट", "ORG", "GOV", "MIL", और "INT"।

    • उपयोग "www.domain.com" आपकी साइट के लिए या (जैसे ".anotherdomain.com") अपने स्थैतिक सामग्री के लिए एक पूरी तरह से अलग डोमेन नाम का उपयोग:

  • तो, आप या तो होगा करने के लिए उदाहरण के लिए

    • , यह स्टैक ओवरफ्लो पर किया जाता है: स्थैतिक सामग्री को स्थैतिक से परोसा जाता है।शुद्ध
    +0

    अच्छा स्पष्टीकरण, यहां +1 भी। – Thiyagaraj

    +0

    वाह, महान जानकारी। चारों ओर खुदाई करते समय मैं उस पर नहीं चला था। धन्यवाद दोस्त। मुझे लगता है कि यह मेरे प्रश्न का उत्तर देता है ... www.domain.com यह है। – brianreavis

    +0

    आपका स्वागत है :-) मज़े करो! (और, यदि आपकी वेबसाइट और कुकीज़ के लिए www.domain.com का उपयोग करना है, तो यह सुनिश्चित करना न भूलें कि "domain.com", जब आपकी साइट तक पहुंचने के लिए उपयोग किया जाता है, तो "www.domain.com" पर रीडायरेक्ट करता है - नहीं ब्राउजर के आधार पर स्वचालित रूप से ऐसा करने के आधार पर: यह हमेशा काम नहीं करता है - उदाहरण के लिए, कभी-कभी, प्रॉक्सी के पीछे काम नहीं करता है (यही वह मामला है जहां मैं काम करता हूं, और यह दर्द होता है) –

    6

    यही कारण है कि कुछ साइटें (इनमें से एक) एक सीडीएन के रूप में उपयोग के लिए एक समर्पित डोमेन पंजीकृत करती है।

    1

    यह संभव के रूप में कुकी डोमेन डोमेन नाम के खिलाफ tail matched है नहीं है। आपको www के साथ जाना होगा।

    संबंधित मुद्दे