Я работаю над приложением, основанным на AngularJS на стороне клиента и Java для моего API (Tomcat + Jersey for WS) на стороне сервера.
Некоторый путь моего API ограничен, если у пользователя нет сеанса, возвращается статус ответа 401. На стороне клиента перехватывается статус 401 http для перенаправления пользователя на страницу входа.
После аутентификации пользователя я создаю сеанс на стороне сервера
httpRequest.getSession(true);и ответ, отправленный клиенту, имеет команду Set-cookie в заголовке:
Set-Cookie:JSESSIONID=XXXXXXXXXXXXXXXXXXXXX; Domain=localhost; Path=/api/; HttpOnly
Проблема в том, что cookie никогда не ставится на стороне клиента. Когда я проверяю файл cookie для домена localhost, он пуст, поэтому в следующих запросах нет этого файла cookie в заголовке и на стороне клиента, все еще не может получить доступ к ограниченному пути моего API.
Клиент и сервер находятся в одном домене, но у них нет одинакового пути и одного и того же номера порта:
Клиент: http://localhost:8000/app/index.html
Сервер: http://localhost:8080/api/restricted/
Дополнительная информация: CORS включен с обеих сторон:
"Access-Control-Allow-Methods", "GET, POST, OPTIONS" "Access-Control-Allow-Origin", "*" "Access-Control-Allow-Credentials", true
Любая идея создания Set-cookie работает правильно? Это проблема, связанная с AngularJS?