2010-07-18 16 views

risposta

15

Le informazioni non sono disponibili tramite document.cookie, ma se si è davvero alla ricerca disperata, è possibile provare a eseguire una richiesta tramite l'oggetto XmlHttpRequest alla pagina corrente e accedere all'intestazione del cookie utilizzando getResponseHeader().

+2

Non c'è nulla di simile nell'intestazione della risposta. Ho provato: request.getAllResponseHeaders(); e dà una cosa che è vicina: Scadenza: Thu, 19 Nov 1981 08:52:00 GMT ma senza intestazioni relative ai vari cookie con il loro tempo di scadenza ... perché dovrebbe? il server non ha nulla a che fare con i cookie lato client ... – Carmageddon

+1

Le intestazioni Set-Cookie e Set-Cookie2 vengono rimosse dalla risposta xhr per motivi di sicurezza. Quello che potresti fare è impostare un'ulteriore intestazione con la data di scadenza del cookie sul lato server e leggerla. –

+0

Non penso che questo funzionerebbe –

22

È impossibile. document.cookie contiene le informazioni nella stringa come questa:

key1=value1;key2=value2;... 

quindi non c'è alcuna informazione sulle date.

È possibile memorizzare queste date nella variabile biscotto separata:

auth_user=Riateche;auth_expire=01/01/2012 

ma l'utente può modificare questa variabile.

+0

Buon suggerimento ... – mkoistinen

0

Una possibilità è quella di eliminare il cookie dal quale si sta cercando la data di scadenza e di riscriverlo. Quindi conoscerai la data di scadenza.

2

non è possibile ottenere la data di scadenza di un cookie tramite JavaScript perché quando si tenta di leggere il cookie di javascript il ritorno document.cookie solo il nome e il valore del cookie come coppie

1

Sì, E ' è possibile. Ho separato il codice in due file:

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..."; 
    } 

?> 

Ora, index.php deve essere caricato una volta. Il pulsante "Ottieni data di scadenza del cookie", tramite una richiesta AJAX, ti darà sempre un "tempo rimanente" aggiornato per la scadenza del cookie, in questo caso in giorni.

+2

'intval ($ _ COOKIE ['cookie'])' Suppone che stia memorizzando la scadenza nel valore del cookie. –

+0

@ JonathanLeaders Esatto, viene memorizzato nel valore del cookie.Io non ho capito il tuo punto –

+2

L'OP si riferisce al recupero della data da cookie già esistenti, non nuovi che creiamo che memorizzano la data come informazione separata –

1

Se si utilizza Chrome, è possibile accedere alla scheda "Risorse" e trovare l'elemento "Cookie" nella barra laterale sinistra. Da lì seleziona il dominio per il quale stai controllando il cookie e ti fornirà un elenco di cookie associati a quel dominio, insieme alla loro data di scadenza.

+1

Anche se questo indirizzo non è stato risolto usando javascript, è comunque utile. – Stonetip

11

E 'ora possibile con il nuovo aggiornamento cromato per la versione 47 per il 2016, si può vedere attraverso strumenti di sviluppo sulla scheda risorse enter image description here, selezionare i cookie e cerca il tuo cookie di data di scadenza sotto "Scade/Max-age"

+0

In questo esempio, puoi spiegare il significato quando la colonna 'Scade' mostra 'Sessione' per alcuni cookie e una data per uno. –

+1

@GauravOjha se dice sessione, vuol dire che scade quando il server ti assegna una nuova sessione e ciò può essere fatto da (A) disconnettendo (B) Chiusura browser (non scheda) ,,,,, ma se mostra qualche data significa che si tratta di un cookie creato manualmente (un codice creato e impostato in modo esplicito) –

+0

Questo funziona bene. Btw. è ora la scheda dell'applicazione - non risorse (mac). – chiappa

Problemi correlati