ajax应用程序中的Internet Explorer 11中的保持活动问题

问题描述:

我有一个使用AJAX与服务器通信的Web应用程序。我使用的是https和SSL,并且保持活动状态设置为10秒。ajax应用程序中的Internet Explorer 11中的保持活动问题

有时,用户正在向服务器发送一个请求,确切地说,当保持活动时间到期时。发生这种情况时,会创建一个新的SSL会话。这很好。 发生这种情况后,浏览器(Internet Explorer 11)正在重新发送AJAX请求。

但是现在发生了奇怪的事情。浏览器只发送请求的标题。没有人。服务器首先等待一个永远不会到来的物体。最后,服务器正在中止请求,客户端会收到http状态为0的异常,并显示消息:网络错误。

有人说这是在使用SSL和保持活动时的正常行为,并且这必须在webb应用程序中处理。其他人说这是在Internet Explorer 11中不正确的行为。

我只能看到服务器不能重用在先前的SSL会话上发送的请求的主体。浏览器需要重新发送整个请求,但这不会发生。

如果我在应用程序中发现异常并将请求重新发送到服务器,则所有事情都会再次运行。但是,抓住所有http = 0并重新发送它们感觉很奇怪。从应用的角度来看也可能是危险的。

该应用程序只适用于IE浏览器,所以我不能与Chrome和FF比较。

我的问题是:这是正常的行为还是我可能在浏览器或webbserver上一些不正确的配置?

+0

您所获得的标题是否与您期望的完全相同(例如正确的Content-Length)? – Neil

+0

是的,从应用程序的角度来看(我工作的地方),我只看到http = 0和excation。网络人员已经看到了我详细的通讯,并告诉我,这是没有身体的完全相同的请求。 – Megavex

当服务器在发送保持活动连接的新请求的同时关闭连接时,则不清楚服务器是否接收到请求并对其执行操作。因此,只有被认为是幂等的请求(即不改变服务器上的任何东西)应该由客户端自动重试。 GET和HEAD在POST时不被认为是幂等的。

因此,如果客户端自动重试GET或HEAD,这将是正确的行为。重试POST会很糟糕。重新提交请求时,如果没有原本有机构的机构(如您声称但未证明)将是一个错误。

+0

感谢您的回复。现在,每个请求都是POST,但我认为我需要改变它。然后我想重新发送GET请求。我明白重新发送POST请求可能会很危险。我不明白的是,在新的SSL会话之后重新发送请求是IE11在没有我的控制的情况下正在执行的操作。所以我必须接受,当发生这种情况时,我发送更新的POST请求,我必须中止并在浏览器中显示错误消息。 – Megavex