我尝试在Spring集成中设置多个cookie以响应http-inbound-gateway ...当我尝试设置多个" Set-Cookie"带有更丰富的标题,只有最后一个cookie才能返回浏览器。我错过了什么?
<int:header-enricher>
<int:header name="Set-Cookie" value="cookie1=abc" overwrite="false" />
<int:header name="Set-Cookie" value="cookie2=xyz" overwrite="false" />
<int:header-enricher/>
答案 0 :(得分:1)
根据RFC6265,此标题应为格式:
Set-Cookie: <Name> = <Value> [ ; expires = <Date>] [ ; path = <Path> ] [ ; domain = <Domain> ]
因此,在<header-enricher>
中没有停顿,只能在单一条目中执行此操作。
由于Spring Integration对Set-Cookie
分号性质一无所知,因此它可以将相同标题的多个声明组合到单个条目中。所以,最后一个获胜。
任何标题的规则相同。
<强>更新强>
顺便说一下,我们现在可以做到这一点。
org.springframework.http.HttpHeaders
是MultiValueMap<String, String>
,因此我们可以为同一个HTTP标头add
多个值,它们将正确填充到HttpServletResponse
。
Spring Integration的DefaultHttpHeaderMapper
可以处理来自Itarable
的{{1}}值。因此,我们可以将MessageHeaders
标题(SI标题)填充为Set-Cookie
,以避免使用分号硬核。
使用List<String>
有两种方法:POJO方法调用或<header-enricher>
:
<script>