2015-03-10 5 views
1

У меня возникли проблемы с настройкой файлов cookie, и, основываясь на чтении, которое я сделал, это должно работать, поэтому я, вероятно, не вижу ничего важного.Set-Cookie для системы входа в систему

Эта ситуация:

Ранее я получил ответы от моего API и сохранить их как печенье используется JavaScript, но потом я обнаружил, что с помощью заголовка ответа Set-Cookie является более безопасным, во многих ситуациях.

У меня есть 2 файла cookie: «nuser» (содержит имя пользователя) и ключ (содержит ключ сеанса). nuser не должен быть httpOnly, чтобы JavaScript мог получить к нему доступ. Ключ должен быть httpOnly, чтобы предотвратить зависание скриптов от кражи сеанса пользователя. Кроме того, любой запрос от клиента на мой API должен содержать файлы cookie.

Запрос Войти

Вот моя текущая реализация: Я делаю запрос на мой логин ИПН на локальном хосте: 8080/Логин/логин (имейте в виду, что веб-клиент размещается на локальном хосте: 80, но на основе того, что я прочитал, номера портов не должны иметь значения для файлов cookie)

Сначала веб-браузер сделает запрос OPTIONS, чтобы подтвердить, что все заголовки разрешены. Я убедился, что ответ сервера включает в себя полномочия контроля доступа-allow-credentials, чтобы предупредить браузер о том, что хранить файлы cookie можно.

После получения запроса OPTIONS браузер выполняет фактический запрос POST в API входа. Он отправляет обратно заголовок set-cookie, и на этот момент все выглядит хорошо. Header Information for the POST request

Проблемы Эта установка дает 2 проблемы. Во-первых, хотя nuser cookie не является httpOnly, я, похоже, не могу получить к нему доступ через JavaScript. Я могу видеть nuser в меню опций cookie моего браузера, но document.cookie yeilds "".

Во-вторых, браузер, кажется, только поместить заголовок Cookie запроса в запросах к точно такой же API (Логин API): enter image description here

Но, если я сделать запрос на другой API, который до сих пор на моем localhost server, заголовок cookie нет: enter image description here О, и это возвращает 406 только потому, что мой сервер в настоящее время настроен для этого, если пользователь не проверен. Я знаю, что это, вероятно, должно быть 403, но основное внимание на этом изображении заключается в том, что заголовок «cookie» не включен в заголовки запросов.

Итак, я объяснил свою реализацию, основываясь на моем понимании куки-файлов, но я, очевидно, что-то пропустил. Было бы с благодарностью воспринято то, как должны выглядеть заголовки запросов и ответов для каждой задачи. Благодарю.

ответ

1

Хорошо, все еще не совсем то, что вызывало проблему с этим конкретным случаем, но я обновил свой сервер localhost: 80, чтобы принимать запросы api, а затем выполните следующий запрос на localhost: 8080, чтобы получить правильную информацию. Поскольку заголовок set-cookie устанавливается localhost: 80 (происхождение клиента), все работает нормально. Из моего чтения раньше я думал, что порты не имеют значения, но, видимо, они это делают.

Смежные вопросы