Chrome localhost cookie не устанавливается - PullRequest
45 голосов
/ 08 сентября 2011

У меня есть приложение ASP.net, которое использует куки для хранения выбранного пользователем языка. Все отлично работает, кроме случаев, когда я на локальном хосте. Замена localhost на 127.0.0.1 заставляет его работать снова ... почему?

Я видел предполагаемые ограничения для файла: //, но я не могу найти ссылку на предполагаемое ограничение для localhost.

Что я не могу понять, так это то, почему файлы сессий ASP.net (ASP.NET_SessionId) и файлы cookie для проверки подлинности с помощью форм ASP.net (.FSAUTHSSO) правильно установлены для домена localhost, а мои файлы cookie - нет ... почему ?! * * 1005

Я уже много гуглил и ничего не работает:

  • Установка флага командной строки Chrome --enable-file-cookies [НЕ ДЕЛАЕТ WORK]
  • Установка cookie для HttpOnly [НЕ имеет значения]
  • Изменение срока действия на сессию или на дату ... [НЕ имеет значения]
  • Изменение пути печенья к корню (/) или к чему-либо еще [НЕ имеет значения]

Так, что имеет значение? :)

А почему файлы cookie ASP.net могут быть установлены, а мои - нет? Какая разница?

В заключение отметим, что это также происходит в IE, но отлично работает в FF.

Спасибо!

Alex

Ответы [ 8 ]

31 голосов
/ 10 сентября 2011

Cookies предназначены для второго уровня и ниже.Домены первого уровня не будут работать.Вместо этого вы должны использовать адрес http://127.0.0.1 (как вы упомянули), или вы можете отредактировать файл хостов, чтобы сопоставить другой URL с TLD с адресом 127.0.0.1, например:

yoursite.tld   127.0.0.1

Просто исследовал это дальше;нашел ответ: Cookies на локальном хосте с явным доменом

19 голосов
/ 05 сентября 2012

, пожалуйста, попробуйте поставить cookie.Domain = null на localhost и использовать имя домена в противном случае.

5 голосов
/ 12 ноября 2015

Хорошие новости.Настройка файлов cookie на локальном хосте теперь возможна в Chrome при запуске Canary build: https://code.google.com/p/chromium/issues/detail?id=551906

2 голосов
/ 29 сентября 2016

Я знаю, что это может быть глупо, но это случилось со мной, когда я взял на себя приложение asp.net mvc, где я не мог заставить их работать локально. Наконец, другой разработчик указал на запись в файле web.config, которая была добавлена ​​недавно.

<httpCookies httpOnlyCookies="true" requireSSL="true" />

Установка requireSSL на "false" локально. Не забудьте применить преобразования через окружение. Надеюсь, это поможет.

2 голосов
/ 14 августа 2012

У меня только что была такая же проблема в Chrome.У меня был cookie.Secure = true.Избавление от этого для localhost решило проблему для меня.

(была та же проблема, FWIW: работал в FF, а не IE или Chrome)

1 голос
/ 30 сентября 2018

В моей ситуации я запустил приложение с основными страницами бритвы asp.net, используя iisexpress (localhost: ####), и столкнулся с этой проблемой с Chrome. Мое исправление состояло в том, чтобы удостовериться, что iisSettings в Properties \ launchSettings.json имеет номер, отличный от 0, для sslPort (44344). Если sslPort установлен в 0, iisexpress не будет запускаться, будет ssl. После изменения 44344 приложение запускается с помощью ssl в iisexpress. В качестве альтернативы, переход к свойствам проекта в Visual Studio и вкладке «Отладка» для включения SSL приведет к тому же изменению для launchsettings.json Например,

"iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:29025/",
    "sslPort": 44344
  }
},
1 голос
/ 02 апреля 2016

У меня была проблема с Chrome, когда не устанавливался файл cookie с истечением 2 недель в будущем - это был файл cookie авторизации (.AspNet.ApplicationCookie), поэтому меня постоянно перенаправляли обратно на страницу входа,Эта проблема не возникала в других браузерах, которые я пробовал.

В итоге я экспериментировал с пользовательскими файлами cookie, чтобы определить, что Chrome считает текущую дату на раньше , чем на самом деле - поэтому, например, я поставилв файле cookie, срок действия которого истек через 1 год сегодня (2 апреля 2017 года), и в действительности chrome установил срок действия этого файла cookie до 1 января 2017 года!Тогда это объясняет, почему файл cookie с двухнедельным сроком действия уже считался истекшим, поскольку chrome отсчитал 3 месяца действительного срока действия и, таким образом, считал, что срок его действия уже истек.

Перезагрузка Chrome не исправила это - я перезагрузил компьютерна данном этапе, и это «исправило» ошибку.Также я должен отметить, что это произошло только для localhost - похоже, все остальные сайты были в порядке.

0 голосов
/ 14 июля 2015

Существует проблема в Chromium, открытая с 2011 года , что если вы явно устанавливаете домен как 'localhost', вы должны установить его как false, чтобы он работал, или использовать установить домен как 127.0.0.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...