Правильно ли повторно отправить HTTP-запрос на пакет TCP RST, который уже был отправлен? - PullRequest
0 голосов
/ 16 апреля 2019

Среда:
Интрасеть: два одинаковых веб-сервера, два сервера приложений, коммутатор уровня 4 (балансировщик нагрузки) и ускоритель SSL работают, и все клиенты (мои пользователи) работаютиспользуя Windows 7 и Internet Explorer.

С чем я столкнулся:
Услуга, которую предлагает мое приложение, обычно занимает 3-7 минут для обработки HTTP-запроса, который пользователи в среднем делают, и когдавремя обработки превышает 5 минут, клиент автоматически отправляет HTTP-запрос, который точно совпадает с первым запросом (заголовок, тело).

Что я выяснил:
Я перехватил пакеты с помощью Wireshark и выяснил, что произошло;сторона сервера (я еще точно не выяснил, какой уровень является точным подозреваемым) отправляет пакет RST, когда запрос обрабатывается в течение 5 минут, и клиент получает пакет RST и повторно отправляет тот же запрос.

Таким образом, он делает два одинаковых дублированных запроса на один запрос, который обрабатывается более 5 минут.

Что мне интересно:
Правильно ли выполнять повторную отправку HTTP-запроса на пакет TCP RST, который уже был отправлен?Можно ли настроить поведение ??

1 Ответ

0 голосов
/ 16 апреля 2019

Мнения здесь разные. Для идемпотентного запроса (например, HTTP «GET») это обычно нормально, особенно если вы до сих пор не получили никакого действительного ответа от сервера. Для неидемпотентного запроса (например, HTTP «PUT») вы должны запросить у пользователя разрешение.

Если вы знаете, что в вашем сценарии повторение запроса не принесет вреда, то, вероятно, хорошо просто повторить запрос.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...