41 votes

Impossible de définir les cookies en Javascript

J'ai une ligne de code très simple qui définit et lit un cookie. Je continue à obtenir une valeur vide pour mon cookie et je ne comprends pas pourquoi. J'ai activé les cookies et je sais qu'ils fonctionnent sur le navigateur.

<HTML>
    <HEAD>
        <TITLE>Hello World</TITLE>
    </HEAD>
    <BODY>
        <SCRIPT type="text/javascript">
            document.cookie = "ding=dong";
        </SCRIPT>
        <script type="text/javascript">
            alert(document.cookie);
        </script>
    </BODY>
</HTML>

121voto

Dmitry Vyal Points 617

Récemment, je suis tombé sur un problème similaire. Mon script ne pouvait pas stocker un cookie dans Chromium, alors qu'il fonctionnait bien sur tous les autres navigateurs majeurs. Après quelques recherches sur Google, il s'est avéré que Chrome ignore les cookies des pages locales. Après avoir téléchargé la page sur un serveur distant, le code a commencé à fonctionner comme par magie.

7voto

John Castell Points 85

J'ai essayé d'enregistrer un cookie sur Chrome et j'ai eu la même erreur, à savoir qu'il ne pouvait pas être enregistré. J'ai donc demandé à un collègue et il m'a suggéré de supprimer le chemin et le domaine (j'avais le nom du cookie, la valeur, l'expiration, le chemin et le domaine) et tout à coup, ça a marché. Donc, pour que le cookie soit réellement enregistré dans Chrome, il suffit d'avoir le nom, la valeur et l'expiration.

J'espère que cela vous aidera.

Exemple :

function createCookie(name,value,days) {
     if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
     }
     else var expires = "";
     document.cookie = name+"="+value+expires+";";
}

7voto

user2257736 Points 71

Chrome refuse les cookies de fichiers. Pour que votre programme fonctionne, vous allez devoir l'essayer dans un autre navigateur ou le télécharger sur un serveur distant. De plus, le code pour votre setcookie et getcookie est essentiellement faux. Essayez d'utiliser ceci pour définir votre cookie :

function setCookie(name,value,expires){
   document.cookie = name + "=" + value + ((expires==null) ? "" : ";expires=" + expires.toGMTString())
}

exemple d'utilisation :

var expirydate=new Date();
expirydate.setTime( expirydate.getTime()+(100*60*60*24*100) )
setCookie('cookiename','cookiedata',expirydate)
// expirydate being a variable with the expiry date in it
// the one i have set for your convenience expires in 10 days

et ceci pour obtenir votre cookie :

function getCookie(name) {
   var cookieName = name + "="
   var docCookie = document.cookie
   var cookieStart
   var end

   if (docCookie.length>0) {
      cookieStart = docCookie.indexOf(cookieName)
      if (cookieStart != -1) {
         cookieStart = cookieStart + cookieName.length
         end = docCookie.indexOf(";",cookieStart)
         if (end == -1) {
            end = docCookie.length
         }
         return unescape(docCookie.substring(cookieStart,end))
      }
   }
   return false
}

exemple d'utilisation :

getCookie('cookiename');

J'espère que cela vous aidera.

Santé, CoolSmoothie

3voto

maudulus Points 274

Avec du chrome, vous ne pouvez pas créer de cookies sur un site web local Vous devez donc faire croire à votre navigateur que ce site n'est pas local en procédant comme suit :

1) Placez le répertoire racine du site Web dans le dossier suivant C:\inetpub\wwwroot (pour que cela ressemble à C:\inetpub\wwwroot\yourProjectFolder )

2) Obtenez votre computer name en cliquant avec le bouton droit de la souris sur Computer en cliquant sur propriétés, et en cherchant Computer Name

3) Accédez à votre site dans le navigateur en visitant http://my-computer-name/yourProjectFolder/index.html et à ce moment-là création de cookies devrait fonctionner.

( remarquez que j'utilise des tirets dans le nom de l'ordinateur, PAS de caractères de soulignement. )

2voto

LaustN Points 612

J'obtiens le même comportement bizarre lorsque j'ouvre une page dans Chrome à partir de localhost

Lorsque je mappe la même page dans mon fichier hosts et que j'ouvre la même page via le nom mappé, la fonctionnalité normale des cookies reprend.

  1. Ouvrez votre fichier d'hôtes en tant qu'administrateur (généralement c:\windows\system32\drivers\etc\hosts )
  2. Ajouter 127.0.0.1 localhostdevelopment.com ou similaire à la fin de votre fichier hosts
  3. Sauvegarder votre fichier hosts (sera rejeté si vous n'avez pas ouvert le fichier en tant qu'admin)
  4. Aller à http://localhostdevelopment.com/ (ou quel que soit le nom que vous lui donnez) dans Chrome.
  5. Veuillez apprécier le fait que vos cookies se comportent normalement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X