如何在 Apache HttpAsyncClientBuilder 中禁用会话 cookie
How to disable Session cookie in Apache HttpAsyncClientBuilder
如果请求中有 JSESSIONID cookie,我正在与无法获取用户身份验证 cookie 的服务通话,并且我无法修改此服务。
它也在每个响应上 returns 这个会话 cookie,所以我的第一个请求有效(除了用户的 cookie 之外没有其他 cookie),但下一个请求总是失败。
我的 restTemplate 配置使用自定义请求工厂,该工厂使用来自 Apache HttpAsyncClientBuilder
.
的 AsyncClient 扩展了 Spring 的 HttpComponentsAsyncClientHttpRequestFactory
有没有办法将其配置为始终忽略会话 cookie?
提前致谢!
如果能找到一个只暗示配置的解决方案就好了,但我做不到,所以我最终扩展了 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
可能不是最好的,但效果很好。
如果请求中有 JSESSIONID cookie,我正在与无法获取用户身份验证 cookie 的服务通话,并且我无法修改此服务。 它也在每个响应上 returns 这个会话 cookie,所以我的第一个请求有效(除了用户的 cookie 之外没有其他 cookie),但下一个请求总是失败。
我的 restTemplate 配置使用自定义请求工厂,该工厂使用来自 Apache HttpAsyncClientBuilder
.
HttpComponentsAsyncClientHttpRequestFactory
有没有办法将其配置为始终忽略会话 cookie?
提前致谢!
如果能找到一个只暗示配置的解决方案就好了,但我做不到,所以我最终扩展了 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
.
可能不是最好的,但效果很好。