我在本地服务器上使用/server/public
和/server/saml
下的端点运行,并且我使用HttpClient(v4.4.1)与之交互。对任何端点的请求触发(如果客户端还没有会话)标头Set-Cookie: JSESSIONID=ABC123; Path=/server/
,以便客户端应该有一个会话。
但是,如果我调试并查看BasicCookieStore
的内容,则保存的Cookie会显示路径/server/public
和/server/saml
,从而导致保存两个Cookie,以及不同的会话Cookie根据端点发送。
我使用标准CookieSpec
,并使用标准严格来查看相同的行为。
任何想法发生了什么或我如何解决它?
答案 0 :(得分:0)
问题似乎是由this bug引起的,导致Path
标题无法得到尊重。相反,客户端会在检索到响应的URL中的最后一个正斜杠之后删除所有内容,并将其用作cookie的路径。 Scott Blum的相关评论:
即,混合包装的cookie属性未得到妥善处理。例如,如果要解析的Set-Cookie标头包含“Path = / foo”属性,则根本不会遵循该路径。这是因为attributeHandler查找失败(它被键入“path”)。
将httpclient升级到4.5版解决了这个问题。