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

Chrome localhost cookie не установлен

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

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

То, что я действительно не могу понять, - это то, почему ASP.net-сессия (ASP.NET_SessionId) и файлы cookie Authentication Cookies ASP.net(.FSAUTHSSO) установлены правильно для домена localhost, но мои файлы cookie не... почему?!

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

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

Так что же важно?:)

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

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

Спасибо!

Алекс

4b9b3361

Ответ 1

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

yoursite.tld   127.0.0.1

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

Ответ 2

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

Это сводило меня с ума в течение нескольких часов, затем я понял:

  1. Недавно я использовал https://localhost и установил файл cookie с тем же именем.

  2. По этой причине http://localhost не смог установить cookie

  3. Я перешел на https, очистил куки на вкладке "приложение" в devtools, и он снова начал работать с http.

Ответ 7

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

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

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

Ответ 8

В моей ситуации я запустил приложение с основными страницами бритвы 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
  }
},

Ответ 9

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