我正在使用 HttpComponents 项目中的 Apache HttpClient。我向其中添加了自定义信任和 key 管理器来处理双向身份验证(我的信任管理器接受所有内容,而我的 key 管理器始终发送相同的客户端证书)。
我发送以下两个请求:
1. 获取/resource.html(使用 http-equiv="Refresh"元标记重定向到 sth.dll)
2. 获取/scripts/sth.dll
我这样做是为了模拟 IE8 的行为,该行为用于连接到 sth.dll 服务(并且它有效)。
如果我想直接连接到 sth.dll 服务(使用浏览器或 httpclient)
我收到 500 错误:找不到指定的路径。不幸的是,当我使用上述方法手动重定向时,我仍然收到 500 错误
我的问题是我还需要模拟什么才能使该服务正常工作?
问题是否有可能在于 IE 重用了 1 个请求中完成的握手数据,而我的 httpclient 进行了两次握手?如果是,那么如何强制httpclient重用ssl信息
我无法访问服务器,也无法向服务提供商寻求帮助(因为他们只支持通过 ie8 访问)。服务器是IIS/6.0。没有可见的 cookie(我使用 Fiddler 从 IE8 获取流量信息)。
有人能给我一些关于去哪里看的新想法吗?
最佳答案
我认为你关于握手的看法是正确的。
当浏览器首次连接到服务器时创建 HTTP session 。它的 ID 作为特殊的 cookie 返回给客户端。例如,对于基于 java 的服务器,它是 jsessionid
。然后客户端在产生进一步的请求时发送厨师。一探究竟。你也应该这样做。我希望如果您在第二个请求中发送 cookie(获取 dll),一切都会正常。
祝你好运。
关于Java HttpClient 模拟 IE8 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485197/