Не могу установить куки в Javascript - PullRequest
35 голосов
/ 12 ноября 2011

У меня есть очень простая строка кода, которая устанавливает и читает 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>

Ответы [ 9 ]

105 голосов
/ 27 сентября 2012

Недавно я наткнулся на похожую проблему.Мой скрипт не смог сохранить cookie в Chromium, хотя он хорошо работал во всех других основных браузерах.После некоторого поиска в Google выяснилось, что Chrome игнорирует файлы cookie с локальных страниц.После того, как я загрузил страницу на удаленный сервер, код волшебным образом начал работать.

6 голосов
/ 14 апреля 2013

Chrome запрещает файлы cookie.Чтобы ваша программа работала, вам нужно будет попробовать ее в другом браузере или загрузить на удаленный сервер.Кроме того, код вашего setcookie и getcookie по сути неверен.Попробуйте использовать это, чтобы установить ваш cookie:

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

пример использования:

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

и это, чтобы получить ваш 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
}

пример использования:

getCookie('cookiename');

Надеюсь, это поможет.

Приветствия, CoolSmoothie

5 голосов
/ 08 ноября 2013

Я пытался сохранить куки в Chrome и имел ту же ошибку, что и при сохранении.Хотя в 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+";";
}
2 голосов
/ 11 сентября 2017

Chrome не сохраняет куки со страниц, которые загружаются из локальной файловой системы. Например: файл: /// C: / Пользователь

2 голосов
/ 05 февраля 2015

С chrome, вы не можете создавать куки на локальном сайте , поэтому вам нужно заставить свой браузер думать, что этот сайт не локальный, выполнив следующие действия:

1) Поместите корневой каталог веб-сайта в C:\inetpub\wwwroot, (чтобы он выглядел как C:\inetpub\wwwroot\yourProjectFolder)

2) Получите computer name, щелкнув правой кнопкой мыши Computer, выбрав свойства и выбрав Computer Name

3) Получите доступ к своему сайту в браузере, посетив http://my-computer-name/yourProjectFolder/index.html, после чего создание файлов cookie должно работать.

( обратите внимание, что в имени компьютера используется тире, НЕ подчеркивает )

2 голосов
/ 11 апреля 2013

Я получаю то же странное поведение при открытии страницы в Chrome с localhost

Когда я сопоставляю одну и ту же страницу в моем файле hosts и открываю ту же страницу через сопоставленное имя, нормальные функции cookie возобновляются.

  1. Откройте файл хостов как администратор.(обычно c:\windows\system32\drivers\etc\hosts)
  2. Добавить 127.0.0.1 localhostdevelopment.com или аналогично концу вашего файла hosts
  3. Сохранить файл hosts (будет отклонен, если вы не открыли файл от имени администратора)
  4. Перейдите на http://localhostdevelopment.com/ (или как вы там это называли) в Chrome.
  5. Пожалуйста, наслаждайтесь тем, чтобы ваши куки вели себя нормально.
1 голос
/ 12 ноября 2011

У меня нормально работает, но еще раз Убедитесь, что в браузере включены JS и Cookies.Вы должны проверить, правильно ли настроены ваши куки или нет, используя if(document.cookie), тогда вам будет легче отладить, где проблема.Может быть, вы куки не написаны правильно.Пожалуйста, примите во внимание следующий код.

Напишите файл cookie

Используйте следующий код, чтобы написать свой файл 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>

ЧитатьВаш файл cookie

После того как вы написали файл cookie, вам необходимо прочитать его, чтобы использовать его.Используйте этот скрипт, чтобы прочитать ваш файл 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>

Вызовите свой файл cookie по ссылке

Установите свой файл cookie, когда кто-то нажимает ссылку с этим кодом в теле HTML:

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

Ссылка: Простые файлы cookie для чтения и записи

Надеюсь, это поможет.

0 голосов
/ 06 сентября 2018

Используйте Локальное хранилище HTML5 вместо: -

<HTML>
    <HEAD>
        <TITLE>Hello World</TITLE>
    </HEAD>
    <BODY>
        <SCRIPT type="text/javascript">
            localStorage.setItem("myCookie", "ding=dong");
        </SCRIPT>
        <script type="text/javascript">
            alert(localStorage.getItem("myCookie"));
        </script>
    </BODY>
</HTML>
0 голосов
/ 26 сентября 2017

Просто смените URL с петлевого сетевого интерфейса на адрес сетевой карты вашей локальной сети, например,

http://localhost:8080 -> http://192.168.1.15:8080 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...