HTTP / 2 Push обещает поведение - PullRequest
1 голос
/ 08 мая 2019

Я работаю над написанием эластичного клиента для HTTP / 2. Мне интересно, каким должно быть поведение клиента, если сервер отправил PUSH_PROMISE, а затем не смог отправить PUSH_RESPONSE, связанный с этим PUSH_PROMISE?

Я прошел через спецификацию HTTP / 2, касающуюся Push Response , но в нем не указано, что нам делать в таких сценариях.

  • Должны ли мы отправить исходный запрос еще раз, если push-ответ не получен? Если исходный запрос успешно отправлен, повторная отправка может вызвать проблемы, не так ли?
  • Или мы должны игнорировать PUSH_PROMISE и продолжать? В таком случае, скажем, сервер пообещал отправить файл, а не отправил его, что произойдет?

Есть ли определенный способ решения этой проблемы?

1 Ответ

1 голос
/ 10 мая 2019

Клиент, безусловно, может запросить тот же ресурс снова.Предположим, например, что у сервера нет возможности узнать, делает ли клиент одновременный запрос на один и тот же ресурс, когда сервер отправляет PUSH_PROMISE.

Client                  Server
------                  ------
HEADERS[sid:1, GET /]
                         HEADERS[sid:1, /], DATA [sid:1], PUSH_PROMISE[sid:2]
HEADERS[sid:3, GET /css] HEADERS[sid:2, /css], DATA[sid:2]
                         HEADERS[sid:3, /css], DATA[sid:3]


Стандартный способ для клиента:затем отмена нажатия будет сбрасывать обещанный поток через RST_STREAM.

...