2017-02-09 6 views
2

Я понимаю, что иногда клиент будет показывать HTTP-запрос как возвращающий код состояния 0, когда запрос не сможет подключиться, раза и т. Д., Но я никогда не видел, чтобы сервер регистрировал 0 как то, что он отправка обратно клиенту.Сервер Rails, возвращающий статус HTTP 0

Я запускаю Rails 4.2, ruby ​​2.2.x API. Я анализировал наши журналы на днях и заметил, что на нетривиальное количество запросов был отправлен код состояния HTTP из 0 нашим Rails API. Я не мог понять, почему.

В некоторых случаях запрос никогда не попадает в приложение для рельсов. Я вижу только сообщение журнала, которое, как мне кажется, регистрируется в стойке по возврату пути запроса и статуса. В других случаях я вижу одно из ранних сообщений журнала, которые мы регистрируем с нашего контроллера приложений.

Кто-нибудь видел такое поведение? Я не уверен, как отлаживать дальше, не приступая к модификации стандартных промежуточных сред, которые предоставляют рельсы. Я сам не способен воспроизвести ситуацию; Я вижу это только эпизодически в наших журналах.

Немного больше о нашем стеке:

  • Rails 4.2.5
  • Руби 2.2.3
  • Puma 3.4.0
  • Мы обратное проксирование с Nginx, но я не думаю, выполняя его, поскольку запрос получен по крайней мере в стойке.

Я понимаю, что, вероятно, будет невозможно ответить на то, что именно происходит здесь, поэтому я надеюсь вместо этого высказать предположения о том, как лучше всего устранить эту проблему.

ответ

1

Обнаружено, что это проблема с нашей настройкой регистрации Rails. Сопоставляя эти журналы в наших журналах доступа nginx, я вижу, что 302 фактически возвращается клиенту. Это обычно происходило, когда защита CSRF не удалась.

Похоже, это вызвано ошибкой логова (жемчужины): https://github.com/roidrage/lograge/issues/67

0

Я видел это поведение, когда запросы были отправлены из разных поддоменов, которые не были разрешены на основе Access-Control-Allow-Origin. Так что, возможно, это одна из возможностей.