Rails 服务器返回 HTTP 状态 0
Rails server returning HTTP status 0
我知道有时客户端会在请求连接失败、超时等情况下将 HTTP 请求显示为返回 0 状态代码,但我从未见过服务器将 0 记录为发送回的内容客户.
我是运行一个Rails4.2,ruby2.2.xAPI。前几天我在分析我们的日志时注意到,我们的 Rails API 以 HTTP 状态代码 0 响应了大量请求。我一直想不通为什么。
在某些情况下,请求似乎从未到达 rails 应用程序。我只看到我认为由机架记录的关于请求路径和返回状态的日志消息。在其他情况下,我可以看到我们从应用程序控制器记录的早期日志消息之一。
有人见过这样的行为吗?我不确定如何在不开始修改 rails 提供的标准机架中间件的情况下进一步调试。我自己无法重现这种情况;我只是偶尔在我们的日志中看到这个。
关于我们的堆栈的更多信息:
- Rails 4.2.5
- Ruby 2.2.3
- 彪马 3.4.0
- 我们正在使用 nginx 进行反向代理,但我认为不会影响它,因为至少 rack 会收到请求。
我意识到可能无法回答这里到底发生了什么,所以我希望能提供有关如何最好地解决此问题的建议。
当请求从不同的子域发送时,根据 Access-Control-Allow-Origin 不允许,我看到了这种行为。所以也许这是一种可能性
发现这是我们的 Rails 日志设置的问题。通过将这些日志与我们的 nginx 访问日志相关联,我可以看到 302 实际上正在返回给客户端。当 CSRF 保护失败时,通常会发生这种情况。
看起来这是由 lograge (gem) 错误引起的:https://github.com/roidrage/lograge/issues/67
我知道有时客户端会在请求连接失败、超时等情况下将 HTTP 请求显示为返回 0 状态代码,但我从未见过服务器将 0 记录为发送回的内容客户.
我是运行一个Rails4.2,ruby2.2.xAPI。前几天我在分析我们的日志时注意到,我们的 Rails API 以 HTTP 状态代码 0 响应了大量请求。我一直想不通为什么。
在某些情况下,请求似乎从未到达 rails 应用程序。我只看到我认为由机架记录的关于请求路径和返回状态的日志消息。在其他情况下,我可以看到我们从应用程序控制器记录的早期日志消息之一。
有人见过这样的行为吗?我不确定如何在不开始修改 rails 提供的标准机架中间件的情况下进一步调试。我自己无法重现这种情况;我只是偶尔在我们的日志中看到这个。
关于我们的堆栈的更多信息:
- Rails 4.2.5
- Ruby 2.2.3
- 彪马 3.4.0
- 我们正在使用 nginx 进行反向代理,但我认为不会影响它,因为至少 rack 会收到请求。
我意识到可能无法回答这里到底发生了什么,所以我希望能提供有关如何最好地解决此问题的建议。
当请求从不同的子域发送时,根据 Access-Control-Allow-Origin 不允许,我看到了这种行为。所以也许这是一种可能性
发现这是我们的 Rails 日志设置的问题。通过将这些日志与我们的 nginx 访问日志相关联,我可以看到 302 实际上正在返回给客户端。当 CSRF 保护失败时,通常会发生这种情况。
看起来这是由 lograge (gem) 错误引起的:https://github.com/roidrage/lograge/issues/67