web-dev-qa-db-fra.com

Impossible de définir des cookies en Javascript

J'ai une ligne de code très simple qui définit et lit un cookie. J'ai gardé la valeur vide pour mon cookie et je ne comprends pas pourquoi. J'ai activé les cookies et je sais que les cookies 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>
33
KMC

Récemment, je suis tombé sur un problème similaire. Mon script ne permettait pas de stocker un cookie dans Chromium, bien que cela fonctionne correctement sur tous les autres navigateurs principaux. Après quelques recherches sur Google, il est apparu que Chrome ignorait les cookies des pages locales. Après avoir téléchargé la page sur le code du serveur distant, il a commencé à fonctionner comme par magie.

101
Dmitry Vyal

Chrome refuse les cookies de fichier. Pour que votre programme fonctionne, vous devrez l’essayer dans un navigateur différent ou le télécharger sur un serveur distant. De plus, le code de votre setcookie et de votre 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 t'aides.

Cheers, CoolSmoothie

6
user2257736

J'ai essayé de sauvegarder un cookie sur Chrome et j'ai eu la même erreur, c'est-à-dire que cela sauverait ... Bien que cela fonctionne dans Firefox, j'ai demandé à un collègue et il m'a suggéré d'enlever le chemin et le domaine (j'avais le nom du cookie , valeur, expire, chemin du domaine AMD) et tout à coup cela a fonctionné ... Donc, pour que le cookie soit réellement sauvegardé dans Chrome, vous avez simplement besoin du nom, de la valeur et de l’expiration.

J'espère que ça aide.

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+";";
}
5
John Castell

Avec chrome, vous ne pouvez pas créer de cookies sur un site Web local}, vous devez donc amener votre navigateur à penser que ce site n'est pas local en procédant comme suit: 

1) Placez le répertoire racine du site Web dans C:\inetpub\wwwroot (ainsi, il ressemble à C:\inetpub\wwwroot\yourProjectFolder

2) Obtenez votre computer name en cliquant avec le bouton droit sur Computer, en cliquant sur les propriétés et en recherchant Computer Name

3) Accédez à votre site dans le navigateur en visitant http://my-computer-name/yourProjectFolder/index.html, à quel moment en créant des cookies devrait fonctionner. 

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

2
maudulus

Chrome ne stocke pas les cookies des pages chargées du système de fichiers local. ex: fichier: /// C:/utilisateur

2
Anne Lingesh

J'ai le même comportement étrange lorsque j'ouvre une page dans Chrome depuis localhost

Lorsque je mappe la même page dans mon fichier hosts et que je l'ouvre sous le nom mappé, la fonctionnalité de cookie normale reprend. 

  1. Ouvrez votre fichier hosts en tant qu'administrateur. (généralement c:\windows\system32\drivers\etc\hosts)
  2. Ajoutez 127.0.0.1 localhostdevelopment.com ou similaire à la fin de votre fichier hosts
  3. Enregistrez votre fichier hosts (sera rejeté si vous n'avez pas ouvert le fichier en tant qu'administrateur)
  4. Allez sur http://localhostdevelopment.com/ (ou ce que vous avez appelé) dans Chrome.
  5. S'il vous plaît profiter d'avoir vos cookies se comportent normalement.
1
LaustN

Cela fonctionne bien pour moi, mais encore une fois, assurez-vous que vos JS et Cookies sont activés dans le navigateur. Vous devriez vérifier si votre cookie est configuré correctement ou si vous n’utilisez pas if(document.cookie). Le débogage sera alors plus facile pour le débogage où se trouve le problème. Peut-être que vos cookies ne sont pas écrits correctement. Veuillez considérer le code suivant.

Ecrire le cookie

Utilisez le code suivant pour écrire votre cookie:

<script language="JavaScript">
 cookie_name = "Basic_Cookie";
 function write_cookie() {
 if(document.cookie) {
 index = document.cookie.indexOf(cookie_name);
 } else {
 index = -1;
 }

 if (index == -1) {
 document.cookie=cookie_name+"=1; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
 } else {
 countbegin = (document.cookie.indexOf("=", index) + 1);
 countend = document.cookie.indexOf(";", index);
 if (countend == -1) {
 countend = document.cookie.length;
 }
 count = eval(document.cookie.substring(countbegin, countend)) + 1;
 document.cookie=cookie_name+"="+count+"; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
 }
 }
 </script>

Lis ton cookie

Une fois le cookie écrit, vous devez le lire pour pouvoir l'utiliser. Utilisez ce script pour lire votre cookie:

<script language="JavaScript">
 function gettimes() {
 if(document.cookie) {
 index = document.cookie.indexOf(cookie_name);
 if (index != -1) {
 countbegin = (document.cookie.indexOf("=", index) + 1);
 countend = document.cookie.indexOf(";", index);
 if (countend == -1) {
 countend = document.cookie.length;
 }
 count = document.cookie.substring(countbegin, countend);
 if (count == 1) {
 return (count+" time");
 } else {
 return (count+" times");
 }
 }
 }
 return ("0 times");
 }
 </script>

Appelez votre cookie dans un lien

Définissez votre cookie lorsque quelqu'un clique sur un lien avec ce code dans votre corps HTML:

<script language="javascript">document.write(gettimes());</script>

Référence: Simple Cookie Read & Write

J'espère que cela t'aides.

1
AlphaMale

Il suffit de changer l’URL de l’interface réseau en boucle à l’adresse du NIC de votre réseau local, par exemple.

http://localhost:8080 -> http://192.168.1.15:8080 
0
lfree