Согласно RFC6265 этот заголовок должен быть в формате:
Set-Cookie: <Name> = <Value> [ ; expires = <Date>] [ ; path = <Path> ] [ ; domain = <Domain> ]
Таким образом, там не останавливается, чтобы сделать это в <header-enricher>
, но только в пределах одной записи.
Поскольку Spring Integration ничего не знает о характере точки с запятой Set-Cookie
, он не может объединить несколько деклараций для одного заголовка для одной записи. Итак, побеждает последний.
То же правило для любого заголовка.
UPDATE
Кстати, мы можем сделать это уже сейчас.
org.springframework.http.HttpHeaders
является MultiValueMap<String, String>
, поэтому мы можем add
несколько значений одного и того же заголовка HTTP, и они будут заполнены должным образом к HttpServletResponse
.
Весна Интеграция DefaultHttpHeaderMapper
может получить дело с Itarable
значениями от MessageHeaders
. Итак, мы можем просто заполнить заголовок Set-Cookie
(заголовок SI), так как List<String>
избегать этой точки с запятой хардкор.
Существует два способа сделать это с помощью <header-enricher>
: метод POJO вызова или <script>
:
<int:header-enricher>
<int:header name="Set-Cookie">
<int-groovy:script>
['cookie1=abc', 'cookie2=xyz']
</int-groovy:script>
</int:header>
</int:header-enricher>
Спасибо, я понимаю, это гораздо лучше. – user366735