【问题标题】:Rails server returning HTTP status 0Rails 服务器返回 HTTP 状态 0
【发布时间】:2023-04-04 08:12:02
【问题描述】:

我了解有时客户端会在请求连接失败、超时等情况下将 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
  • 彪马 3.4.0
  • 我们正在使用 nginx 进行反向代理,但我认为它不会影响它,因为至少机架收到了请求。

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

【问题讨论】:

    标签: ruby-on-rails ruby puma


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-21
        • 1970-01-01
        • 2022-12-29
        • 2015-01-12
        • 2017-05-13
        • 2018-10-05
        • 1970-01-01
        • 2011-01-01
        相关资源
        最近更新 更多