请求包含多个同名Cookie时,SpringMVC中@CookieValue的行为是什么?

时间:2019-04-16 02:48:56

标签: java spring-mvc cookies

在处理带有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。但是找不到文档记录了这种行为,因此不确定这种巧合与否。

1 个答案:

答案 0 :(得分:0)

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

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

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

与此同时,WebUtils#getCookie的Javadoc指出:

  

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