cookie无法读取bdstoken_如何在Spring Boot中使用Cookie?

d0cd134f957aff5c712f4b5d02eae826.png

HTTP Cookie(也称为 Web cookie或 浏览器cookie)是服务器在用户浏览器中存储的一小段信息。服务器在返回浏览器发出的请求的响应时设置cookie。浏览器存储cookie并将其与下一个请求一起发送回同一服务器。Cookie通常用于会话管理,用户跟踪和存储用户首选项。

Cookie可帮助服务器在多个请求中记住客户端。如果没有cookie,服务器会将每个请求视为新客户端。

在本文中,我们将学习如何在Spring Boot应用程序中读取,设置和删除HTTP cookie。

读取HTTP Cookie

Spring Framework提供了 @CookieValue注释以获取任何HTTP cookie的值,而无需迭代从请求中获取的所有cookie。此批注可用于将cookie的值映射到控制器方法参数。

cc9c2a49c164d100d301941bc7f86259.png

在上面的代码片段中,需要注意的是,如果未设置默认值,则Spring将在HTTP请求中找不到名称为username的cookie时抛出java.lang.IllegalStateException异常。

设置HTTP Cookie

要在Spring Boot中设置cookie,我们可以使用HttpServletResponse类的方法addCookie()。您需要做的就是创建一个新的Cookie类实例并将其添加到响应中。

9b1dfd472ea2eccd4c512bbd13af7781.png

读取所有的Cookies

我们也可以使用HttpServletRequest类作为控制器方法参数来读取所有cookie,而不是使用@CookieValue注释。 此类提供getCookies()方法,该方法将浏览器发送的所有cookie作为Cookie数组返回。

f118cd1e0a333baae43deac45363b938.png

Cookie期限

如果没有为cookie指定过期时间,那么只要会话没有过期,它就会持续。这样的cookie称为会话cookie。会话cookie在用户关闭浏览器或清除cookie之前一直处于活动状态。上面创建的用户名cookie实际上是一个会话cookie。

但是您可以覆盖这个默认行为,并使用cookie类的setMaxAge()方法设置cookie过期时间。

47e1d7e048c6bb1614bd7a8a81134b80.png

现在,用户名cookie将在接下来的7天内保持活跃,而不是在浏览器关闭时过期。这种在指定日期和时间过期的cookie称为永久cookie。

安全cookie。

安全cookie是仅通过加密的HTTPS连接发送到服务器的cookie。 安全cookie无法通过未加密的HTTP连接传输到服务器。

3829db9274c6ca86b7c49de0b91f8aef.png

HttpOnly Cookie

HttpOnly cookie用于防止跨站点脚本(XSS)攻击,无法通过JavaScript的Document.cookie API访问。 当为cookie设置HttpOnly标志时,它告诉浏览器该服务器应该只访问该特定cookie。

ba9f3054458595153eec8ab2a96122d5.png

Cookie范围

如果未指定范围,则仅将cookie发送到服务器以获取用于在浏览器中设置它的路径。 我们可以使用Cookie类的setPath()方法更改此行为。 这将为cookie设置Path指令。

0b610ae8888c1eeb13c426ec62e9bbba.png

删除Cookie

若要删除cookie,请将Max-Age指令设置为0并取消其值的设置。您还必须传递用于设置它的相同的其他cookie属性。不要将Max-Age指令值设置为-1。否则,浏览器将把它视为会话cookie。

7e090c3f9c78864e3e36214b735022ae.png

Cookie提供了一种在服务器和浏览器之间交换信息的方式,以管理会话(登录,购物车,游戏分数),记住用户偏好(主题,隐私政策接受),以及跟踪整个站点的用户行为。

Spring Boot提供了一种读取,写入和删除HTTP cookie的简便方法。

1.@CookieValue注释将cookie的值映射到方法参数。您应该设置默认值以避免cookie不可用时的运行时异常。2.HttpServletResponse类可用于在浏览器中设置新的cookie。您只需创建一个Cookie类实例并将其添加到响应中。

3.要阅读所有Cookie,你可以使用HttpServletRequest的getCookies()返回数组的方法Cookie。

4.Max-Age 指令指定cookie过期的日期和时间。

5.如果要将敏感信息存储在cookie中,请确保设置Secure和HttpOnly标记以避免XSS攻击。

6.设置Path=/为在当前域的任何位置都可以访问cookie。

7.要删除cookie,请设置Max-Age to 0并传递用于设置它的所有属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值