也许这是一个过于笼统的问题,但既然这个问题我们已经存在了很长一段时间,我还是试一试。我们有一些应用程序使用 HTTP 来连接客户端(网站或胖客户端)和服务器。运行这些应用程序的计算机位于防火墙和代理后面的网络中,服务器不在同一网络中。
问题是,https 请求时不时会超时,并且根据客户端的不同,应用程序会“挂起”或执行其他一些奇怪的操作。问题肯定出在我们的网络内部,因为如果我尝试使用网络外部的应用程序,它会正常运行。
您能提示一下我最有可能在哪里找到问题吗?
答案1
这取决于为什么代理正在造成干扰。如果这是一个长期连接,并且它在某个超时时关闭,您可以:
- 在您的 Web 服务器上禁用保持活动功能(这会对所有客户端产生不利影响,因此它可能是最不理想的“解决方案”)。
- 假设您使用的是 JavaScipt,则可以关闭每个请求之间的连接。如果您使用的是 HttpURLConnection,则只需在对象上调用
setRequestProperty("Connection", "close")
后跟即可。对于 XMLHTTPRequest,请求通过关闭连接。大多数其他方法/技巧都有类似的属性或方法。检测代理(从标题中)、要求用户设置长/短连接的首选项并将其保存为 HTML5 样式(例如或类似的东西)可获得加分;disconnect()
setRequestHeader("Connection", "close")
Via
localStorage.prefConnection="close"
您的代理仍然可能对 Web 请求做了一些“疯狂”的事情,并且与上述情况无关。超时只是一种预感(正如我之前所见,尤其是在使用旧代理和新式 Ajaxy 应用程序时)。