在处理带有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
。但是找不到文档记录了这种行为,因此不确定这种巧合与否。
答案 0 :(得分:0)
它是第一个具有所需名称的cookie,用于检索值。
在Spring引导2.0.3(spring-webmvc 5.0.7.RELEASE)中:
从ServletCookieValueMethodArgumentResolver#resolveName
中,它调用WebUtils#getCookie
检索给定名称的cookie。
与此同时,WebUtils#getCookie
的Javadoc指出:
检索具有给定名称的第一个cookie。请注意,多个Cookie可以具有相同的名称,但可以具有不同的路径或域。