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>
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.
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
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+";";
}
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)
Chrome ne stocke pas les cookies des pages chargées du système de fichiers local. ex: fichier: /// C:/utilisateur
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.
c:\windows\system32\drivers\etc\hosts
)127.0.0.1 localhostdevelopment.com
ou similaire à la fin de votre fichier hostsCela 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.
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