Rails服务器返回HTTP状态0

时间:2017-02-09 16:56:15

标签: ruby-on-rails ruby puma

据我所知,有时客户端会显示HTTP请求,因为当请求无法连接,超时等时返回0状态代码,但我从未见过服务器记录0作为发送回客户端的内容。

我正在运行Rails 4.2,ruby 2.2.x API。前几天我正在分析我们的日志,并注意到我们的Rails API正在响应HTTP状态代码为0的非平凡数量的请求。我一直无法弄明白为什么。

在某些情况下,似乎请求永远不会进入rails应用程序。我只看到我认为由机架记录的日志消息,其中包含返回的请求路径和状态。在其他情况下,我可以看到我们从应用程序控制器记录的早期日志消息之一。

有没有人见过这样的行为?如果不开始修改rails提供的标准机架中间件,我不确定如何进一步调试。我自己无法重现这种情况;我只在日志中偶尔看到这个。

关于我们的堆栈的更多信息:

  • Rails 4.2.5
  • Ruby 2.2.3
  • Puma 3.4.0
  • 我们正在使用nginx反向代理,但我认为不会影响它,因为至少在机架上收到了请求。

我意识到回答这里到底发生了什么可能是不可能的,所以我希望能找到关于如何最好地解决问题的建议。

2 个答案:

答案 0 :(得分:3)

发现这是我们的Rails日志记录设置的问题。通过将这些日志与我们的nginx访问日志相关联,我可以看到302实际上正在返回给客户端。当CSRF保护失败时,通常会发生这种情况。

看起来这是由lograge(gem)错误造成的:https://github.com/roidrage/lograge/issues/67

答案 1 :(得分:0)

我从基于Access-Control-Allow-Origin不允许的不同子域发送请求时看到了这种行为。也许这可能是一种可能性