Рейтинг:0

Иногда POST-запрос от клиента к бэкэнду не содержит тела

флаг pr

Мы запускаем 2 разных приложения на Heroku. Оба имеют API, написанный на PHP и Symfony, и работают через Apache. Один из клиентских интерфейсов написан на Vue, другой на Angular.

В API мы сериализуем объекты команд и запросов из тела POST. Иногда этот процесс завершается сбоем из-за отсутствия необходимых полей. Мы знаем это благодаря мониторингу ошибок Sentry. Там мы можем просмотреть эти запросы, и все они полностью лишены тела.

Нам так и не удалось воспроизвести этот случай.

Проблема распространяется на разные конечные точки, разные браузеры, разные устройства (мобильные и настольные) без какого-либо общего знаменателя, кроме отсутствующего тела запроса.

Существуют ли известные проблемы в схеме сети, Apache или Heroku, которые могут привести к такому поведению в крайнем случае, например, при очень медленном соединении? Что может привести к тому, что запрос будет перенаправлен на серверную часть без тела? Есть ли что-то еще без макета приложения, которое может привести к этому?

anx avatar
флаг fr
anx
Я бы не сильно беспокоился о нескольких странных запросах, которые намеренно созданы для проверки на наличие уязвимостей типа контрабанды запросов. Такие заголовки, как `Sec-Fetch-*` и `X-Requested-With`, могут помочь вам найти общий знаменатель вне типа устройства и ОС.
anx avatar
флаг fr
anx
У вас есть настройка [NEL](https://www.w3.org/TR/network-error-logging/)? Если клиент отключен Heroku за отправку нечетных заголовков запросов в результате ошибки в приложении JavaScript, он все равно может сообщить вам об ошибке.
флаг pr
@anx Все запросы POST. Я проверю заголовки, спасибо за вклад. Я не думаю, что у меня есть настройка NEL. Как бы я сделал это с Heroku? Какие заголовки могут нарушить запросы, чтобы они все еще отправлялись, но не содержали тела?
anx avatar
флаг fr
anx
Примеры из учебника — «Передача-кодирование: фрагментация» — забавные и большие заголовки. Я не думаю, что эти два являются вашей проблемой: значения по умолчанию в apache и Heroku разумны и совместимы в этом отношении. Но покажите *примеры заголовков* и вашу *конфигурацию Apache*, возможно, там есть подсказка.
anx avatar
флаг fr
anx
NEL разделяет определение конечной точки отчета с CSP, и входящие данные, вероятно, будут анализироваться тем же программным обеспечением, поэтому, если у вас установлены заголовки Content-Security-Policy, это также будет точкой для настройки NEL.

Ответить или комментировать

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