2010-07-18 17 views
35

क्या जावास्क्रिप्ट से मौजूदा कुकी की सृजन या समाप्ति तिथि पुनर्प्राप्त करना संभव है? यदि हां, तो कैसे?जावास्क्रिप्ट से कुकी समाप्ति तिथि/निर्माण तिथि कैसे प्राप्त करें?

+2

बस उत्सुक, आपने गलत जवाब को स्वीकार किए जाने के रूप में क्यों चिह्नित किया? –

उत्तर

15

जानकारी दस्तावेज़.cookie के माध्यम से उपलब्ध नहीं है, लेकिन यदि आप इसके लिए वास्तव में हताश हैं, तो आप XmlHttpRequest ऑब्जेक्ट के माध्यम से वर्तमान पृष्ठ पर अनुरोध करने का प्रयास कर सकते हैं और getResponseHeader() का उपयोग करके कुकी हेडर तक पहुंच सकते हैं।

+2

प्रतिक्रिया शीर्षलेख पर ऐसी कोई बात नहीं है। मैंने कोशिश की: request.getAllResponseHeaders(); और यह एक चीज देता है जो करीब है: समाप्त हो जाता है: गुरु, 1 9 नवंबर 1 9 81 08:52:00 जीएमटी लेकिन उनके समाप्ति समय के साथ विभिन्न कुकीज़ से संबंधित कोई शीर्षलेख नहीं ... यह क्यों होगा? सर्वर के क्लाइंट साइड कुकीज़ के साथ कुछ लेना देना नहीं है ... – Carmageddon

+1

सुरक्षा कारणों से एक्स-प्रतिक्रिया से सेट-कुकी और सेट-कुकी 2 शीर्षलेख हटा दिए जाते हैं। आप क्या कर सकते हैं सर्वर की तरफ कुकी समाप्ति तिथि के साथ अतिरिक्त शीर्षलेख सेट करें और इसे पढ़ें। –

+0

मुझे नहीं लगता कि यह –

22

यह असंभव है। document.cookie इस तरह स्ट्रिंग में जानकारी होती है:

key1=value1;key2=value2;... 

तो वहाँ दिनांकों बारे में कोई जानकारी नहीं है।

आप अलग कुकी चर में इन तारीखों स्टोर कर सकते हैं:

auth_user=Riateche;auth_expire=01/01/2012 

लेकिन उपयोगकर्ता इस चर बदल सकते हैं।

+0

अच्छा सुझाव ... – mkoistinen

0

एक ऐसी कुकी को हटाना है जिसे आप समाप्ति तिथि की तलाश कर रहे हैं और इसे फिर से लिखना चाहते हैं। फिर आप समाप्ति तिथि जान लेंगे।

2

आप नहीं, क्योंकि जब आप कुकी पढ़ने की कोशिश जावास्क्रिप्ट के माध्यम से एक कुकी की समाप्ति तिथि प्राप्त कर सकते हैं जावास्क्रिप्ट document.cookie वापसी सिर्फ नाम और जोड़े

1

के रूप में कुकी का मान से हाँ, यह संभव है। मैं दो फ़ाइलों में कोड अलग है:

index.php

<?php 

    $time = time()+(60*60*24*10); 
    $timeMemo = (string)$time; 
    setcookie("cookie", "" . $timeMemo . "", $time); 

?> 
<html> 
    <head> 
     <title> 
      Get cookie expiration date from JS 
     </title> 
     <script type="text/javascript"> 

      function cookieExpirationDate(){ 

       var infodiv = document.getElementById("info"); 

       var xmlhttp; 
       if (window.XMLHttpRequest){ 
        xmlhttp = new XMLHttpRequest; 
       }else{ 
        xmlhttp = new ActiveXObject(Microsoft.XMLHTTP); 
       } 

       xmlhttp.onreadystatechange = function(){ 
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
         infodiv.innerHTML = xmlhttp.responseText; 
        } 
       } 

       xmlhttp.open("GET", "cookie.php", true); 
       xmlhttp.send(); 

      } 

     </script> 
    </head> 
    <body> 
     <input type="button" onclick="javascript:cookieExpirationDate();" value="Get Cookie expire date" /> 
     <hr /> 
     <div id="info"> 
     </div> 
    </body> 
</html> 

cookie.php

<?php 

    function secToDays($sec){ 
     return ($sec/60/60/24); 
    } 

    if(isset($_COOKIE['cookie'])){ 

     if(round(secToDays((intval($_COOKIE['cookie']) - time())),1) < 1){ 
      echo "Cookie will expire today"; 
     }else{ 
      echo "Cookie will expire in " . round(secToDays((intval($_COOKIE['cookie']) - time())),1) . " day(s)"; 
     } 
    }else{ 
     echo "Cookie not set..."; 
    } 

?> 

अब, index.php एक बार लोड किया जाना चाहिए। एजेक्स अनुरोध के माध्यम से "कुकी की समाप्ति तिथि प्राप्त करें" बटन, कुकीज की समाप्ति के लिए आपको हमेशा "टाइम बाएं" अपडेट करेगा, इस मामले में दिनों में।

+2

'अंतराल ($ _ कुकी ['कुकी']) मान लीजिए कि आप कुकी मूल्य में समाप्ति को संग्रहीत कर रहे हैं। –

+0

@ जोनाथन लेडर बिल्कुल सही है, इसे कुकी मूल्य में संग्रहीत किया जा रहा है। मुझे आपकी बात नहीं मिली। –

+2

ओपी पहले से ही मौजूदा कुकीज़ से तारीख को पुनः प्राप्त करने का जिक्र कर रहा है, न कि नए जो हम इस तारीख को जानकारी के एक अलग टुकड़े के रूप में स्टोर करते हैं –

1

यदि आप क्रोम का उपयोग कर रहे हैं तो आप "संसाधन" टैब प्राप्त कर सकते हैं और बाएं साइडबार में आइटम "कुकीज़" ढूंढ सकते हैं। वहां से उस डोमेन का चयन करें जिसे आप सेट कुकी की जांच कर रहे हैं और यह आपको उस समाप्ति तिथि के साथ उस डोमेन से जुड़े कुकीज़ की एक सूची देगा।

+1

सेट कर सकता है भले ही यह जावास्क्रिप्ट का उपयोग करके संबोधित नहीं किया गया हो, यह अभी भी उपयोगी है। – Stonetip

11

अब यह 2016 के लिए संस्करण 47 के लिए नई क्रोम अद्यतन के साथ संभव है, आप इसे डेवलपर उपकरण के माध्यम से संसाधनों टैब पर enter image description here, चयन कुकीज़ देख सकते हैं और के तहत अपने कुकी समय सीमा समाप्ति दिनांक के लिए देख सकते "समय-सीमा समाप्त/अधिकतम उम्र"

+0

इस उदाहरण में, क्या आप कुछ कुकीज़ के लिए 'समाप्ति' कॉलम 'सत्र' दिखाते हैं और एक की तारीख के दौरान अर्थ का अर्थ बता सकते हैं। –

+1

@ गौरवोजा यदि यह सत्र कहता है तो इसका अर्थ यह है कि जब सर्वर आपको एक नया सत्र सौंपा जाता है और यह किया जा सकता है (ए) लॉगिंग आउट (बी) बंद ब्राउज़र (टैब नहीं) ,,,, लेकिन अगर यह कुछ तारीख दिखाता है इसका मतलब है कि यह मैन्युअल रूप से बनाई गई कुकी है (कुछ कोड ने इसे बनाया है और तिथि को स्पष्ट रूप से सेट किया है) –

+0

यह अच्छी तरह से काम करता है। Btw। अब यह एप्लिकेशन टैब है - संसाधन नहीं (मैक)। – chiappa

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