gpt4 book ai didi

java - 在 Spring Webflux 中添加的多个 cookie 未合并到单个 HTTP header 中

转载 作者:行者123 更新时间:2023-12-01 13:56:12 24 4
gpt4 key购买 nike

我正在尝试使用包含多个 cookie 的 Spring Webflux 的 WebClient 发送请求。我的代码如下所示:

Mono<Void> loginCall = webClient.post()
.uri("/Sites/Login")
.cookie("key1", "value1")
.cookie("key2", "value2")
.cookie("key3", "value3")
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(Void.class));

我在端点上收到的内容如下所示(注意多个 cookie header ):
$ nc -l -p 8989
POST /Sites/Login HTTP/1.1
user-agent: ReactorNetty/0.8.11.RELEASE
host: localhost:8989
accept: */*
transfer-encoding: chunked
cookie: key1=value1
cookie: key2=value2
cookie: key3=value3

我的期望是收到这样的 HTTP 请求(单个 cookie header ):
cookie: key1=value1; key2=value2; key3=value3

我正在使用 Spring Boot 2.1.8。

我尝试了很多方法,但我尝试的所有方法都会导致多个 cookie header 。 HTTP 规范对多个 cookie header 的事实非常清楚。不得使用 (并且我的 Web 服务器接收此请求也不喜欢它)。

如何向 WebClient 请求添加多个 cookie,以便将它们合并到单个 HTTP header 中? (是的,我可以开始手动设置标题并合并 cookie,但这不知何故感觉不对)

最佳答案

遇到了同样的问题,我发现的唯一方法是像这样手动生成“Cookie” header (Groovy 语言):

UserInfo retrieveUserInfo(List<Cookie> cookies) {
String cookieHeader = cookies.collect { "${it.name}=${it.value}" }.join('; ')
return webClient
.get()
.uri('your API path here')
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.header(HttpHeaders.COOKIE, cookieHeader)
.retrieve()
.bodyToMono(UserInfo.class)
.block()
}

关于java - 在 Spring Webflux 中添加的多个 cookie 未合并到单个 HTTP header 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58043205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com