如何在Apache HttpAsyncClientBuilder中禁用会话cookie

时间:2019-01-28 17:07:41

标签: apache-httpcomponents

我正在与服务联系,如果请求中包含JSESSIONID cookie,则该服务无法获取用户身份验证cookie,并且我无法修改此服务。 它还会在每个响应上返回此会话cookie,因此我的第一个请求可以正常工作(除了用户的cookie之外没有其他cookie),但是下一个请求将始终失败。

我的restTemplate配置使用一个自定义请求工厂,该工厂使用来自Apache HttpComponentsAsyncClientHttpRequestFactory的AsyncClient扩展了Spring HttpAsyncClientBuilder

有没有一种方法可以配置为始终忽略会话cookie?

谢谢!

1 个答案:

答案 0 :(得分:0)

找到一个仅包含配置的解决方案会很不错,但是我不能,所以我最终扩展了BasicCookieStore:

public class DefaultCookieStore extends BasicCookieStore {

    private static String SESSION_COOKIE_NAME = "JSESSIONID";

    @Override
    public void addCookie(Cookie cookie) {
        if (!SESSION_COOKIE_NAME.equals(cookie.getName())) {
            super.addCookie(cookie);
        }
    }
}

并使用setDefaultCookieStore方法将其添加到我的HttpAsyncClientBuilder和HttpClientBuilder中。

可能不是最好的东西,但是效果很好。