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.
Спасибо!
Алекс
Ответы
Ответ 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 и использовать имя домена иначе.
Ответ 3
Хорошие новости. Настройка файлов cookie на локальном хосте теперь возможна в Chrome при запуске Canary buildhttps://code.google.com/p/chromium/issues/detail?id=551906
Ответ 4
У меня была такая же проблема в Chrome. У меня был cookie.Secure = true. Избавление от этого для локального хоста исправило проблему для меня.
(Если бы такая же проблема, FWIW: работал в FF, а не в IE или Chrome)
Ответ 5
Я знаю, что это может быть глупо, но это случилось со мной, когда я взял приложение asp.net mvc, где я не мог заставить их работать локально. Наконец, другой разработчик указал на запись в файле web.config, который был добавлен недавно.
<httpCookies httpOnlyCookies="true" requireSSL="true" />
Установка requireSSL на "false" локально. Не забудьте применить преобразования в среде.
Надеюсь, это поможет.
Ответ 6
Это сводило меня с ума в течение нескольких часов, затем я понял:
Недавно я использовал https://localhost и установил файл cookie с тем же именем.
По этой причине http://localhost не смог установить cookie
Я перешел на 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
.