首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Spring Boot中使用Cookie?

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

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

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

读取HTTP Cookie

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

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

设置HTTP Cookie

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

读取所有的Cookies

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

Cookie期限

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

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

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

安全cookie。

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

HttpOnly Cookie

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

Cookie范围

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

删除Cookie

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

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并传递用于设置它的所有属性。

更多JAVA学习方法,资料,评论区戳我!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190822A0KBAH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券