有谁知道是否有办法使用 Reactor Netty HttpClient 在 Spring WebClient 中禁用 cookie 管理?
我注意到WebClient.Builder和HttpClient API 都提供了一种将 cookie 添加到出站请求的方法,但我正在寻找一种方法来完全禁止它们(如果存在)。这类似于disableCookieManagement
Apache 的HttpComponentClientBuilder。
有谁知道是否有办法使用 Reactor Netty HttpClient 在 Spring WebClient 中禁用 cookie 管理?
我注意到WebClient.Builder和HttpClient API 都提供了一种将 cookie 添加到出站请求的方法,但我正在寻找一种方法来完全禁止它们(如果存在)。这类似于disableCookieManagement
Apache 的HttpComponentClientBuilder。
看起来没有办法本身禁用 cookie 处理,但这似乎可行:创建自己的 HttpClient,然后使用 HttpClient.doOnRequest 注册一个回调,以便在发送请求之前调用。在回调中,调用 HttpClientRequest.requestHeaders() 来检索请求标头,然后删除Cookie
标头。
User-Agent
在发送请求之前删除标头的示例代码。
public class Main {
public static void main(String[] args) {
HttpClient httpClient = HttpClient.create().doOnRequest((request, connection) -> {
request.requestHeaders().remove("User-Agent");
});
WebClient client = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
Mono<String> r = client.get().uri("https://www.google.com").retrieve()
.bodyToMono(String.class);
System.out.println(r.block());
}
}
在我的测试中,我没有看到 Reactor Netty HttpClient 对响应中返回的 cookie 做任何事情。我实际上希望启用像 Apache HttpClient 支持的 cookie 存储,但所有迹象表明 Netty HttpClient 没有这样的功能。
在Reactor Netty 的整个代码库中,除了其中一个单元测试外,没有使用“set-cookie”标头。这告诉我,除非客户端代码选择查找它们,否则默认情况下会忽略 cookie。