it-swarm.com.de

Cookies können nicht in Javascript gesetzt werden

Ich habe eine sehr einfache Codezeile, die ein Cookie setzt und liest. Ich bekam immer einen leeren Wert für meinen Cookie und verstehe nicht warum. Ich habe Cookies aktiviert und weiß, dass Cookies im Browser funktionieren.

<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

Vor kurzem bin ich auf ein ähnliches Problem gestoßen. Mein Skript konnte keinen Cookie in Chromium speichern, obwohl es bei allen anderen Browsern gut funktionierte. Nach einigem Googeln stellte sich heraus, dass Chrome Cookies von lokalen Seiten ignoriert. Nachdem ich die Seite auf den Remote-Server-Code hochgeladen hatte, begann die Arbeit magisch.

101
Dmitry Vyal

Chrome lehnt Datei-Cookies ab. Damit Ihr Programm funktioniert, müssen Sie es in einem anderen Browser ausprobieren oder auf einen Remote-Server hochladen. Außerdem ist der Code für Setcookie und Getcookie im Wesentlichen falsch. Versuchen Sie es damit, Ihren Cookie zu setzen:

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

anwendungsbeispiel:

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

und das, um deinen Keks zu bekommen:

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
}

anwendungsbeispiel:

getCookie('cookiename');

Hoffe das hilft.

Prost, CoolSmoothie

6
user2257736

Ich habe versucht, einen Cookie in Chrome zu speichern, und hatte den gleichen Fehler, den er speichern würde ... Obwohl er in Firefox funktionierte, fragte ich einen Kollegen und er schlug vor, Pfad und Domäne (Name des Cookies) mitzunehmen , value, expire, path AMD domain) und plötzlich hat es funktioniert ..__ Damit der Cookie tatsächlich in Chrome gespeichert werden kann, brauchen Sie nur den Namen, den Wert und das Ablaufdatum.

Ich hoffe es hilft.

Beispiel:

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

Mit chrome, Sie können auf einer lokalen Website keine Cookies erstellen, müssen Sie Ihren Browser dazu bringen, dass diese Site nicht lokal ist, indem Sie Folgendes tun: 

1) Platzieren Sie das Stammverzeichnis der Website in C:\inetpub\wwwroot (so wie es aussieht C:\inetpub\wwwroot\yourProjectFolder

2) Holen Sie sich Ihren computer name, indem Sie mit der rechten Maustaste auf Computer klicken, auf Eigenschaften klicken und nach Computer Name suchen.

3) Greifen Sie im Browser auf Ihre Website zu, indem Sie http://my-computer-name/yourProjectFolder/index.html aufrufen. An dieser Stelle sollte das Erstellen von Cookies funktionieren. 

(Beachten Sie, dass ich Bindestriche im Computernamen verwende, NICHT unterstrichen).

2
maudulus

Chrome speichert keine Cookies von Seiten, die vom lokalen Dateisystem geladen werden. Beispiel: Datei: /// C:/Benutzer

2
Anne Lingesh

Das seltsame Verhalten beim Öffnen einer Seite in Chrome von localhost

Wenn ich dieselbe Seite in meiner Hosts-Datei zuordnen und dieselbe Seite über den zugeordneten Namen öffne, wird die normale Cookie-Funktion fortgesetzt. 

  1. Öffnen Sie Ihre Hosts-Datei als Admin. (normalerweise c:\windows\system32\drivers\etc\hosts)
  2. Fügen Sie 127.0.0.1 localhostdevelopment.com oder ähnliches am Ende Ihrer hosts-Datei hinzu
  3. Speichern Sie Ihre hosts-Datei (wird abgelehnt, wenn Sie die Datei nicht als admin geöffnet haben)
  4. Gehen Sie zu http://localhostdevelopment.com/ (oder wie auch immer Sie es nennen) in Chrome.
  5. Wir freuen uns, dass sich Ihre Cookies normal verhalten.
1
LaustN

Es funktioniert gut für mich aber noch einmal Stellen Sie sicher, dass Ihre JS und Cookies im Browser aktiviert sind. Sie sollten prüfen, ob Ihr Cookie richtig eingestellt ist oder nicht if(document.cookie) verwendet. Es wird dann einfacher für das Debugging, wo das Problem liegt. Möglicherweise sind Ihre Cookies nicht richtig geschrieben. Bitte beachten Sie den folgenden Code.

Schreibe den Cookie

Verwenden Sie den folgenden Code, um Ihren Cookie zu schreiben:

<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>

Lies dein Cookie

Nachdem Sie den Cookie geschrieben haben, müssen Sie ihn lesen, um ihn verwenden zu können. Verwenden Sie dieses Skript, um Ihr Cookie zu lesen:

<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>

Cookie in einem Link anrufen

Legen Sie Ihren Cookie fest, wenn jemand in Ihrem HTML-Body auf einen Link mit diesem Code klickt:

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

Referenz: Einfaches Cookie lesen und schreiben

Hoffe das hilft.

1
AlphaMale

Ändern Sie einfach die URL von der Loopback-Netzwerkschnittstelle in die Adresse der NIC Ihres LAN, um die Arbeit zu erledigen, z.

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