我正在使用Apache HttpComponents HttpClient 4.4.1与在IIS上运行的ASP.Net SOAP服务进行通信(客户端和服务器位于同一主机上)。 SOAP服务返回带有会话令牌的Set-Cookie标头,以响应其AuthenticateUser服务。例如:
02 22:16:32.994 DEBUG <localhost-startStop-1> [org.apache.http.headers ] http-outgoing-1 << Set-Cookie: NTSSOCookie=50d2300d-31cf-4187-820f-83b29949f38b; expires=Sat, 02-Jul-2016 21:16:32 GMT; path=/
...
02 22:16:33.002 DEBUG <localhost-startStop-1> [rotocol.ResponseProcessCookies] Cookie accepted [NTSSOCookie="50d2300d-31cf-4187-820f-83b29949f38b", version:0, domain:palab46, path:/, expiry:Sat Jul 02 22:16:32 BST 2016]
我观察到的特殊情况是,如果我仅使用主机名连接到服务器,则HttpClient库指示它已接受从服务器返回的cookie,但从不将其附加到同一连接的传出请求。但是,如果我切换到使用服务器的IP地址或FQDN,则返回cookie就好了。
我已经验证了身份验证请求和后续请求中的地址,端口和协议是否一致,以及Cookie路径和到期日期值在所有情况下都是有效且一致的。
对于踢,我还检查了主机名和FQDN都解析为正确的IP地址。
可能导致这种奇怪行为的原因是什么?