Подтвердить что ты не робот

Невозможно установить файлы cookie в Javascript

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

Ответ 1

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

Ответ 2

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');

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

Cheers, CoolSmoothie

Ответ 3

Я попытался сохранить файл cookie в Chrome и имел ту же ошибку, что и он. Хотя он работал в Firefox, поэтому я попросил коллега, и он предложил мне убрать путь и домен (у меня было имя файла cookie, значение, expire, path amd domain), и все это сработало. Так что просто чтобы куки файлы действительно сохранялись в 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+";";
}

Ответ 4

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

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

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

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

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

Ответ 5

Он отлично работает для меня, но еще раз Убедитесь, что ваши JS и Cookies включены в браузере. Вы должны проверить, правильно ли вы используете cookie или не используете 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, вам нужно его прочитать, чтобы использовать его. Используйте этот script для чтения вашего файла 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

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

Ответ 6

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

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

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

Ответ 7

Chrome не хранит файлы cookie со страниц, загружаемых из локальной файловой системы. ex: file:///C:/User

Ответ 8

Просто измените URL-адрес из сетевого интерфейса loopback на адрес сетевого адаптера вашей локальной сети, выполнив эту работу, например.

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