如何让Apache HttpClient尊重Set-Cookie标头中的Path?

时间:2015-09-21 13:06:03

标签: java apache-httpcomponents

我在本地服务器上使用/server/public/server/saml下的端点运行,并且我使用HttpClient(v4.4.1)与之交互。对任何端点的请求触发(如果客户端还没有会话)标头Set-Cookie: JSESSIONID=ABC123; Path=/server/,以便客户端应该有一个会话。

但是,如果我调试并查看BasicCookieStore的内容,则保存的Cookie会显示路径/server/public/server/saml,从而导致保存两个Cookie,以及不同的会话Cookie根据端点发送。

我使用标准CookieSpec,并使用标准严格来查看相同的行为。

任何想法发生了什么或我如何解决它?

1 个答案:

答案 0 :(得分:0)

问题似乎是由this bug引起的,导致Path标题无法得到尊重。相反,客户端会在检索到响应的URL中的最后一个正斜杠之后删除所有内容,并将其用作cookie的路径。 Scott Blum的相关评论:

  

即,混合包装的cookie属性未得到妥善处理。例如,如果要解析的Set-Cookie标头包含“Path = / foo”属性,则根本不会遵循该路径。这是因为attributeHandler查找失败(它被键入“path”)。

将httpclient升级到4.5版解决了这个问题。