При настройке файла cookie с javascript на стороне клиента document.cookie=...
, secure
атрибут заставляет cookie "быть переданным только через защищенный протокол как https", см. Спецификацию MDN.
Я установил cookie в своем SPA, на стороне клиента (то есть в коде, запущенном браузером) следующим образом:
document.cookie = 'myCookie=myValue;expires=Sun, 31 Dec 2017 23:00:00 GMT;path=/;secure;';
где Sun, 31 Dec 2017 23:00:00 GMT
, получен с использованием метода javascript Date
toUTCString()
и может быть любой датой в отдаленном будущем (имелся отчет с expires
проблемами, когда дата меньше 2 часов в будущее, но это не поставлено на карту здесь).
Это работает для Chrome на macOS и на Android, но cookie не установлен ни для Chrome, ни для Safari на iOS. После того, как я выкалывал, я решил, что удаление secure
атрибута позволяет установить cookie:
document.cookie = 'myCookie=myValue;expires=Sun, 31 Dec 2017 23:00:00 GMT;path=/;';
Кто-нибудь знает, как я могу установить свой файл cookie для Chrome и Safari на iOS, чтобы он передавался только через https?
Конечно, должен быть способ, и я исследовал многие вопросы SO безрезультатно. Спасибо
У меня была такая же проблема, и она начала работать, когда я добавил параметр домена.
document.cookie = 'myCookie=myValue;expires=Sun, 31 Dec 2017 23:00:00 GMT;domain=www.mydomain.com;path=/;secure;';
Подробнее можно найти здесь: Как установить безопасный флаг cookie с помощью javascript
domain=my-domain-name.herokuapp.com;
и cookie все еще не установлен. Я получаю что-то не так?