【问题标题】:How to disable cookies with Spring WebClient如何使用 Spring WebClient 禁用 cookie
【发布时间】:2019-06-21 00:45:54
【问题描述】:

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

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

【问题讨论】:

    标签: java spring-boot kotlin spring-webflux reactor-netty


    【解决方案1】:

    看起来没有办法禁用 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());
        }
    }
    

    【讨论】:

    • 您能否为此添加一些代码示例?我也在找一样的。
    • 是的,如果你能等几个小时,它就在家里!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-05
      • 2015-09-16
      • 1970-01-01
      • 2019-10-04
      • 2021-02-22
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多