据我所知,有时客户端会显示HTTP请求,因为当请求无法连接,超时等时返回0状态代码,但我从未见过服务器记录0作为发送回客户端的内容。
我正在运行Rails 4.2,ruby 2.2.x API。前几天我正在分析我们的日志,并注意到我们的Rails API正在响应HTTP状态代码为0的非平凡数量的请求。我一直无法弄明白为什么。
在某些情况下,似乎请求永远不会进入rails应用程序。我只看到我认为由机架记录的日志消息,其中包含返回的请求路径和状态。在其他情况下,我可以看到我们从应用程序控制器记录的早期日志消息之一。
有没有人见过这样的行为?如果不开始修改rails提供的标准机架中间件,我不确定如何进一步调试。我自己无法重现这种情况;我只在日志中偶尔看到这个。
关于我们的堆栈的更多信息:
我意识到回答这里到底发生了什么可能是不可能的,所以我希望能找到关于如何最好地解决问题的建议。
答案 0 :(得分:3)
发现这是我们的Rails日志记录设置的问题。通过将这些日志与我们的nginx访问日志相关联,我可以看到302实际上正在返回给客户端。当CSRF保护失败时,通常会发生这种情况。
看起来这是由lograge(gem)错误造成的:https://github.com/roidrage/lograge/issues/67
答案 1 :(得分:0)
我从基于Access-Control-Allow-Origin不允许的不同子域发送请求时看到了这种行为。也许这可能是一种可能性