【问题标题】:What is the behavior of @CookieValue in SpringMVC when request contains multiple cookie with same name?当请求包含多个同名cookie时,SpringMVC中@CookieValue的行为是什么?
【发布时间】:2023-03-05 22:57:02
【问题描述】:

在处理带有cookie的REST请求时,我使用@CookieValue来检索cookie的值,比如:

@GetMapping("/path")
public ResponseEntity doRequest(@CookieValue(value = "cookie_name", required = false) final String cookieValue) {

问题是,我们可以向这个端点发送多个同名的 cookie,比如:

curl -v http://localhost/path --cookie "cookie_name=abc; cookie_name=def" 

cookieValue 会得到什么值?

用 Spring boot 2.0.3 试过,值似乎是abc,第一个值。但是找不到文档注意到这种行为,所以不确定这是否巧合。

【问题讨论】:

    标签: java spring-mvc cookies


    【解决方案1】:

    这是第一个具有所需名称的 cookie,将用于检索值。

    在 Spring boot 2.0.3(spring-webmvc 5.0.7.RELEASE)中:

    ServletCookieValueMethodArgumentResolver#resolveName,它调用WebUtils#getCookie 来检索给定名称的cookie。

    同时,WebUtils#getCookie 的 Javadoc 指出:

    检索具有给定名称的第一个 cookie。请注意,多个 cookie 可以具有相同的名称但不同的路径或域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 2021-01-08
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      相关资源
      最近更新 更多