java - 请求未发送 HttpOnly cookie

标签 java angular cookies jwt cookie-httponly

我想使用 HttpOnly cookies,我在 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);

...

我在客户端收到了带有 cookie 的响应,但是当我发送下一个请求时,请求中没有 cookie。也许我错过了什么,但据我所知,这些 HttpOnly cookie 必须由浏览器在每个到达定义路径的请求(JavaScript 无法访问这些 cookie)时发回。

我有以下请求 header :

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

和以下响应 header :

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

同样在客户端,我在 Angular2 中使用 withCredentials: trueX-Requested-With:XMLHttpRequest 作为请求 header 。

而且是跨域。

最佳答案

是的,你是正确的,你的浏览器应该在 cookie 未过期时自动发送 cookie,并且 httpOnly 标志意味着它不能通过 JavaScript 访问或操作。

不过

您需要确保您发送的 cookie 不是跨域的,如果您需要跨域,则需要以不同的方式处理它。

关于java - 请求未发送 HttpOnly cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42018233/

相关文章:

java - 3路归并排序

java - 如何将一对一的基本元素加入到实体中?

angular - 如何使用 Let's Encrypt 证书解决 Angular 7 中的 "error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt"?

javascript - Angular4 + Angular CLI 支持 Javascript AngularJS?

css - Angular - 具有多重选择的事件和非事件 CSS

javascript - 存储用户稍后可以检索的 JS 变量和 Canvas 数据的替代方法?

java - 我如何强制 Jackson 使用对象的 setter ?

java - Android Gradle ResolutionStrategy force 仍然会下载以前版本的 lib

http - 2 个具有相同名称和域但路径不同的 cookie

javascript - Cypress:删除所有拦截路由的 cookie