在 Angular 和 Java 中存储 cookie 的方法



我正在开发一个Web应用程序,在客户端使用Angular,在服务器端使用Spring的Java。我读过一些文章,但没有找到我的问题的具体答案。目标是从双方存储、读取和修改 cookie。我想找出方便和简单的方法来存储和读取cookie。

首先,是否有一些最佳实践/约定可以在客户端设置它,然后是否需要在两端阅读和修改它,或者......?

我发现在客户端使用ngx-cookie-service非常容易。对于服务器端,情况更糟。我试图以这种方式添加cookie作为响应:

@RequestMapping("/")
public String hello(HttpServletResponse response) {
response.addCookie(new Cookie("foo", "bar"));
//..        
}

但它不存储饼干。

同样使用 Spring,我尝试通过客户端读取已经存储的 cookie,但它也不起作用:

@RequestMapping("/")
public String hello(@CookieValue("myCookie") String cookie){
log.info("My cookie {}", cookie);
(...)
}

检查这个: 访问控制允许凭据

基本上,如果您的服务器在标头中有此设置,那么您对服务器的请求也必须将withCredentials属性设置为true

客户端使用各种 npm 包(例如您提到的包(很容易。

服务器端,您通常会使用"Set-Cookie"响应标头在浏览器中设置cookie。这通常用于在/api/login 终结点响应上进行身份验证,但您可以将其用于其他目的。

使用 Set-Cookie 响应标头时,最好将其设为 HttpOnly,以防止 JavaScript 访问和篡改。它只是在所有后续的API请求中发送,JavaScript甚至不需要担心它。

这可以在服务器端使用,例如,在接收传入请求时,来确定经过身份验证的用户是谁。如果没有,请给他们一个 401。

安全意味着 cookie 只能通过 HTTPS 协议传递。

文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

不确定您将如何编写Java Spring来设置Set-Cookie响应标头,但我相信您可以查找该标头。

编辑: response_headers

empty_cookies

相关内容

  • 没有找到相关文章

最新更新