3

有谁知道是否有办法使用 Reactor Netty HttpClient 在 Spring WebClient 中禁用 cookie 管理?

我注意到WebClient.BuilderHttpClient API 都提供了一种将 cookie 添加到出站请求的方法,但我正在寻找一种方法来完全禁止它们(如果存在)。这类似于disableCookieManagementApache 的HttpComponentClientBuilder

4

2 回答 2

3

看起来没有办法本身禁用 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());
    }
}
于 2019-01-28T06:16:28.717 回答
0

在我的测试中,我没有看到 Reactor Netty HttpClient 对响应中返回的 cookie 做任何事情。我实际上希望启用像 Apache HttpClient 支持的 cookie 存储,但所有迹象表明 Netty HttpClient 没有这样的功能。

Reactor Netty 的整个代码库中,除了其中一个单元测试外,没有使用“set-cookie”标头。这告诉我,除非客户端代码选择查找它们,否则默认情况下会忽略 cookie。

于 2019-09-13T21:10:47.837 回答