#node.js #reactjs #security #cookies #cross-domain
Вопрос:
Итак, в своем приложении я устанавливаю файл cookie следующим образом:
this.cookies.set('session', sessionProperties, {
path: '/',
expires: new Date(session.valid_until),
secure: true,
sameSite: 'none'
});
Отлаживая, я вижу, что генерируется правильная строка, заканчивающаяся на SameSite=None; Secure
. Затем я вижу объект .cookies с объектом сеанса в нем.
Это происходит только на производственном сервере — он работает локально и на других тестовых серверах.
Однако затем браузер сообщает, что никаких файлов cookie вообще не существует, и Firefox жалуется, что файлы cookie сеанса в будущем не будут сохраняться, потому что в них отсутствует безопасность, что абсурдно, поскольку (1) они уже не сохраняются, и (2) у них есть безопасный набор
- Я правильно настроил CORS, разрешив правильный исходный домен и разрешив учетные данные
- Я получаю данные с верительными грамотами: верно
- Это HTTPS
У меня нет идей — я не знаю, почему он не сохраняется или как устранить эту проблему дальше.
Пожалуйста, обратите внимание, что secure:true
и sameSite: 'none'
, а также credentials: true
и без подстановочных знаков-это все шаги по устранению неполадок, предпринятые при попытке исправить это, и не являются причиной, поскольку проблема возникла до них
Единственное, что я вижу, это то, что что-то между мной и сервером вызывает сбой файлов cookie.
Что может быть причиной этого?
Комментарии:
1. Я не понимаю твоей проблемы. Вы имеете в виду, что вы устанавливаете файл cookie, видите
Set-Cookie
заголовок, но браузер никогда не возвращает файл cookie вCookie
заголовке, за исключением случаев, когда он работает должным образом? Какое место во всем этом занимает CORS? В чем заключается ценностьsession.valid_until
? Вы подключаетесь к своему сайту сhttps
помощью ?2. Файл cookie не является частью запроса, файлы cookie просто устанавливаются в JavaScript. Функция установки файла cookie, по-видимому, работает, но браузер просто не может сохранить файл cookie. История с корсом была просто тем, что я хватался за соломинку
3. файл document.cookie снова становится пустым, как только страница перезагружается
4. Вы УСТАНАВЛИВАЕТЕ файл cookie только НА СТОРОНЕ КЛИЕНТА, и когда вы загружаете страницу, он исчезает? В наиболее распространенных сеансах файлы cookie отправляются серверной частью после проверки подлинности браузера, а затем ПЕРЕДАЮТСЯ ОБРАТНО на сервер по каждому запросу на идентификацию. Это то, что ты здесь делаешь? Если это так, проверьте заголовки в сообщении. Если вы устанавливаете файлы cookie только на стороне клиента с помощью Javascript, затем проверьте хранилище файлов cookie браузера после того, как вы установили файл cookie, и убедитесь, что он принят, ПЕРЕД ПЕРЕЗАГРУЗКОЙ. Если это не так, то некоторые из ваших параметров, вероятно, отключены.
5. Но поскольку это файл cookie только на стороне клиента, почему сервер, на котором он запущен, влияет на это, кажется, что он выходит из строя только при запуске с этого сервера