无法在Javascript中设置Cookie

KMC*_*KMC 37 javascript cookies google-chrome

我有一个非常简单的代码行来设置和读取cookie.我一直为我的cookie获得空值,并且不明白为什么.我启用了cookie并且知道cookie在浏览器上运行.

<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>
Run Code Online (Sandbox Code Playgroud)

Dmi*_*yal 111

最近我偶然发现了类似的问题.我的脚本无法在Chromium中存储cookie,尽管它在所有其他主流浏览器上都运行良好.经过一些谷歌搜索后发现Chrome忽略了本地页面的cookie.我将页面上传到远程服务器代码后神奇地开始工作.

  • 实际上答案很好,我只是说答案背后的实际逻辑是垃圾. (6认同)
  • 作为cookie的替代方案,您可以尝试使用[HTML5本地存储](https://www.w3schools.com/html/html5_webstorage.asp),即使通过file:///访问也可以使用. (5认同)
  • 这就是答案; 如果OP会这样标记它会很好. (2认同)
  • Google Chrome v38上也是如此. (2认同)

小智 7

Chrome拒绝文件Cookie.要使程序正常工作,您必须在其他浏览器中尝试或将其上传到远程服务器.另外,你的setcookie和getcookie的代码本质上是错误的.尝试使用它来设置你的cookie:

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

用法示例:

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
Run Code Online (Sandbox Code Playgroud)

这是为了得到你的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
}
Run Code Online (Sandbox Code Playgroud)

用法示例:

getCookie('cookiename');
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

干杯,CoolSmoothie


Joh*_*ell 5

我试图在Chrome上保存一个cookie并遇到同样的错误,它会保存.虽然它确实在Firefox中工作,所以我问了一个同事,他建议我带走路径和域名(我有cookie的名称,值,过期,路径和域名),突然之间它起作用了.因此,只是为了让cookie实际保存在Chrome中,您只需要名称,值和过期即可.

希望能帮助到你.

例:

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+";";
}
Run Code Online (Sandbox Code Playgroud)