HttpOnly куки не отправляются по запросу
Я хочу использовать HttpOnly
куки, и я установил его в Java следующим образом:
...
Cookie accessTokenCookie = new Cookie("token", userToken);
accessTokenCookie.setHttpOnly(true);
accessTokenCookie.setSecure(true);
accessTokenCookie.setPath("/");
response.addCookie(accessTokenCookie);
Cookie refreshTokenCookie = new Cookie("refreshToken", refreshToken);
refreshTokenCookie.setHttpOnly(true);
refreshTokenCookie.setSecure(true);
refreshTokenCookie.setPath("/");
response.addCookie(refreshTokenCookie);
...
Я получил ответ от куки-файлов со стороны клиента, но при отправке следующего запроса куки-файлы в запросе отсутствуют. Может быть, я что-то скучаю, но, как я понял, эти HttpOnly
cookie-файлы должны отправляться браузером обратно при каждом запросе (JavaScript не имеет доступа к этим cookie-файлам), поступающему по указанному пути.
У меня есть следующие заголовки запроса:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8,hu;q=0.6,ro;q=0.4,fr;q=0.2,de;q=0.2
Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Connection:keep-alive
Content-Length:35
content-type:text/plain
Host:localhost:8080
Origin:http://localhost:4200
Referer:http://localhost:4200/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36
X-Requested-With:XMLHttpRequest
и следующие заголовки ответа:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:4200
Access-Control-Expose-Headers:Access-Control-Allow-Origin, Content-Type, Date, Link, Server, X-Application-Context, X-Total-Count
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Content-Length:482
Content-Type:application/json;charset=ISO-8859-1
Date:Fri, 03 Feb 2017 13:11:29 GMT
Expires:0
Pragma:no-cache
Set-Cookie:token=eyJhbGciO;Max-Age=10000;path=/;Secure;HttpOnly
Set-Cookie:refreshToken=eyJhb8w;Max-Age=10000;path=/;Secure;HttpOnly
Vary:Origin
Также на стороне клиента я использую withCredentials: true
в Angular2 и X-Requested-With:XMLHttpRequest
как заголовок запроса.
И это кросс-домен.
1 ответ
Да, вы правы, имея cookie, ваш браузер должен отправлять cookie автоматически, пока он не истек, а флаг httpOnly означает, что к нему нельзя получить доступ или манипулировать им с помощью JavaScript.
тем не мение
Вы должны убедиться, что отправляемый вами cookie не является междоменным, если вам требуется междоменный, вам придется обращаться с ним по-другому.