Всегда ли HTTP-запросы отменяются всеми браузерами, если исходный iframe уничтожается до его завершения?

В Chrome я заметил, что если я уничтожу iframe до того, как запрос на отправку формы внутри него завершится, то запрос будет отменен. Похоже, этого не происходит в Firefox и IE.

Это то, что спецификация рекомендует? Другие браузеры планируют сделать то же самое в будущем?

1 ответ

"Планируют ли другие браузеры сделать то же самое в будущем?"

Понятия не имею, но цепочка спецификаций, которую я показываю ниже, в конечном счете опирается на спецификацию выборки, которая была частично мотивирована работниками сервисов, которые поддерживаются Chrome и Firefox, "В разработке" для MS Edge и "В стадии рассмотрения" для WebKit (по состоянию на 2017-01-17).

от WHATWG iframe раздел состояния:

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

ПРИМЕЧАНИЕ. Это происходит без запуска событий unload (вложенный контекст просмотра и его Document отбрасываются, а не выгружаются).

Документы браузеров WHATWG отбрасывают Document раздел состояния:

Когда контекст просмотра должен отбрасывать документ, пользовательский агент должен выполнить следующие шаги:

Установите для состояния восстановления документа значение false.

Выполните все шаги по очистке документа для Документа, которые определены этой спецификацией и другими применимыми спецификациями.

Прервать документ. [выделение добавлено]

Удалите все задачи, связанные с Документом, из любого источника задач, не выполняя эти задачи.

Откажитесь от всех дочерних контекстов просмотра Документа.

Потерять сильную ссылку из контекста просмотра Документа на Документ.

В том же разделе документа об отмене документа говорится:

Если документ прерван, пользовательский агент должен выполнить следующие шаги:

Прервать активные документы каждого дочернего контекста просмотра. Если это приводит к тому, что для какого-либо из этих объектов Документа для их состояния восстановления установлено значение false, тогда также установите для состояния восстановления этого документа значение false.

Отмените все экземпляры алгоритма выборки [выделение добавлено] в контексте этого документа, отбросив любые задачи, поставленные в очередь для них, и отбросив любые дополнительные данные, полученные для них из сети. Если это привело к каким-либо случаям отмены алгоритма выборки или к любым задачам, находящимся в очереди, или к удалению любых сетевых данных, то установите для состояния восстановления документа значение false.

Если документ имеет активный анализатор, прервите этот анализатор и установите для состояния восстановления документа значение false.

Учитывая, что "алгоритм извлечения" является стандартизированным способом, по которому браузер делает любой HTTP-запрос, я интерпретирую отмену любых незавершенных запросов, сделанных удаленным iframe в соответствии с вышеуказанными разделами.

Ср Получить спецификации, если у вас еще не было достаточно.:)

Снова ссылки

iframe элемент

Отменить Document

Прервать Document

Получить спецификацию

Другие вопросы по тегам