如何为spring-integration http-inbound-gateway设置多个cookie?

时间:2014-12-11 16:48:02

标签: http cookies spring-integration

我尝试在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/>

1 个答案:

答案 0 :(得分:1)

根据RFC6265,此标题应为格式:

Set-Cookie: <Name> = <Value> [ ; expires = <Date>] [ ; path = <Path> ] [ ; domain = <Domain> ] 

因此,在<header-enricher>中没有停顿,只能在单一条目中执行此操作。

由于Spring Integration对Set-Cookie分号性质一无所知,因此它可以将相同标题的多个声明组合到单个条目中。所以,最后一个获胜。

任何标题的规则相同。

<强>更新

顺便说一下,我们现在可以做到这一点。

org.springframework.http.HttpHeadersMultiValueMap<String, String>,因此我们可以为同一个HTTP标头add多个值,它们将正确填充到HttpServletResponse

Spring Integration的DefaultHttpHeaderMapper可以处理来自Itarable的{​​{1}}值。因此,我们可以将MessageHeaders标题(SI标题)填充为Set-Cookie,以避免使用分号硬核。

使用List<String>有两种方法:POJO方法调用或<header-enricher>

<script>