Welcome! Log In Create A New Profile

Advanced

Re: повторная отправка POST запросов ?

Maxim Dounin
December 25, 2019 01:22PM
Hello!

On Wed, Dec 25, 2019 at 02:58:15PM +0500, Илья Шипицин wrote:

> ср, 25 дек. 2019 г. в 14:38, Sergey Kandaurov <pluknet@nginx.com>:
>
> >
> > > On 24 Dec 2019, at 23:35, Илья Шипицин <chipitsine@gmail.com> wrote:
> > >
> > > привет!
> > >
> > > допустим, такая ситуация. есть POST запрос, у него есть хедеры и,
> > собственно, тело запроса. мы отправили хедеры на бекенд, тело не успели
> > отправить, и бекенд нам сделал TCP RST.
> > >
> > > должен ли такой POST повторно отправляться, если не указан
> > non_idempotent ? (судя по моим экспериментам - не отправляется. но ведь
> > тело не было отправлено ? значит мы должны попасть под условие, что такой
> > запрос можно отправить повторно ?)
> >
> > Как только мы успешно установили соединение и перешли к отправке запроса
> > (не важно, успели начать отправку тела или нет), запрос считается
> > отправленным,
> > т.к. в общем случае мы не знаем, был ли он обработан или нет.
> >
>
> я предлагаю такую логику.
> бекенд умеет отличать полностью полученный запрос от неполного запроса
> (например, по Content-Length)
> навряд ли бекенд будет обрабатывать неполностью полученный запрос
>
> и считать отправленными только полностью отправленные запросы

Считать-то можно, но у бекенда может быть своё мнение по этому
вопросу. Каких-либо явных утверждений в RFC 2616 / RFC 7231,
которые бы говорили о том, что так можно - я в своё время не
нашёл. И по факту так скорее всего нельзя, так как на тело
бекенду во многих случаях может быть наплевать.

Если хочется это место оптимизировать - проще всего это делать,
явно указав, что повторно отправлять неидемпотентные запросы
можно, и озаботившись защитой от дублирующихся запросов на уровне
приложения. Тем более, что в общем случае это в любом случае
нужно делать, ибо защищаться от нажатия пользователем кнопки
"отправить" по второму разу и/или кнопки refresh - тоже надо.

--
Maxim Dounin
http://mdounin.ru/
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

повторная отправка POST запросов ?

Илья Шипицин December 24, 2019 03:36PM

Re: повторная отправка POST запросов ?

Sergey Kandaurov December 25, 2019 04:40AM

Re: повторная отправка POST запросов ?

Илья Шипицин December 25, 2019 05:00AM

Re: повторная отправка POST запросов ?

Maxim Dounin December 25, 2019 01:22PM

Re: повторная отправка POST запросов ?

Илья Шипицин December 25, 2019 02:34PM

Re: повторная отправка POST запросов ?

Maxim Dounin December 25, 2019 03:14PM

Re: повторная отправка POST запросов ?

Илья Шипицин December 25, 2019 04:08PM

Re: повторная отправка POST запросов ?

Maxim Dounin December 26, 2019 06:58AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 188
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready