Rails 服务器返回 HTTP 状态 0

Rails server returning HTTP status 0

我知道有时客户端会在请求连接失败、超时等情况下将 HTTP 请求显示为返回 0 状态代码,但我从未见过服务器将 0 记录为发送回的内容客户.

我是运行一个Rails4.2,ruby2.2.xAPI。前几天我在分析我们的日志时注意到,我们的 Rails API 以 HTTP 状态代码 0 响应了大量请求。我一直想不通为什么。

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

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

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

我意识到可能无法回答这里到底发生了什么,所以我希望能提供有关如何最好地解决此问题的建议。

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

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

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