【问题标题】:Restlet with Simple connector dropping requests?带有简单连接器丢弃请求的 Restlet?
【发布时间】:2013-05-20 03:17:19
【问题描述】:

我遇到了一个非常奇怪的问题,浏览器的 HTTP 请求似乎被 Restlet 服务器使用的简单连接器丢弃了。

服务器设置:

  • Restlet 2.1.2 服务器
  • Restlet-Simple 扩展(带有 Simple 4.1.21)
  • 用于摘要身份验证的 Restlet-crypto 扩展

服务器正在为浏览器提供网页,并使用 javascript 的 XMLHttpRequest 来获取更新。但是,其中一些 XMLHttpRequest 没有完成。 Chrome 的 javascript 调试器显示这些的“失败”状态; Firefox 的调试器会记录一个没有 HTTP 状态代码的完成时间并记录响应。数据包嗅探器表明有问题的请求实际上已发送到服务器,但服务器从未响应。调试表明这些请求永远不会到达我们的服务器代码。

我已经用 Firefox、Chrome 和 IE 验证了这个问题。所有三个浏览器(最新版本)都遇到了这个问题。此外,每个浏览器都会重复且可重现地遇到完全相同的请求问题。不过,这组请求在三种浏览器之间有所不同。

真正奇怪的是,当使用服务器的机器名称(测试在 LAN 上运行)时,问题确实会出现,但在使用机器的 IP 地址时不会出现。从 Digest 身份验证切换回 Basic 身份验证也可以解决问题,将 Simple 连接器替换为 Jetty 也是如此。

我现在倾向于切换到 Jetty,但我仍然想知道发生了什么。有没有人见过这样的行为,或者知道这里出了什么问题?

【问题讨论】:

  • 您应该发布配置 Restlet 的代码并进行身份验证。

标签: java restlet digest-authentication simple-framework


【解决方案1】:

我们最近在使用 Restlet 时遇到了类似的问题,这也导致一些请求未完成。问题是 Restlet 中的非同步地图访问,已修复 (https://github.com/restlet/restlet-framework-java/issues/753)。

如果您看到一个或多个线程导致高 CPU 流量,这可能表明您受到此问题的影响。

如果您的 XMLHttpRequests 并行出现,您可能会受到影响。

【讨论】:

  • 该特定问题可能会导致随机故障。然而,在我的情况下,被忽略的请求集总是可重复地相同。不过,这取决于浏览器。因此,Firefox 错过了对一组请求的响应,IE 错过了另一组请求,Chrome 错过了另一组请求。
猜你喜欢
  • 1970-01-01
  • 2019-04-10
  • 2016-03-13
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多