Порядок заголовков при передаче GET, POST запросов в Firefox 122.0.1

Поскольку я являюсь разработчиком библиотеки для парсинга сайтов CurlPro, при доработке библиотеке для работы с brotly мне потребовалось дописать возможность осуществлять запросы с использованием функции file_get_contents(ранее для целей запросов применялся только curl, в котором видимо нет возможности декомпрессии по алгоритму brotly). Для того чтобы соединения с Web-сервером с стороны библиотеки выглядели похожими на Firefox было решено проанализировать последовательность и содержание заголовков которые отправляет браузер Firefox 122.0.1(именно эта версия была актуальной на момент тестирования) при передаче GET и POST запросов, в том числе при установке атрибута тега формы enctype равным "multipart/form-data"

Тестирование производилось с использованием PHP-скрипта который выводит форму, а так же отображает массив заголовков переданных клиентом серверу(испытания показали что порядок их соответствует реально отправляемому порядку заголовков), а так же в настойках virtualhost для домена на котором производилось тестирование было установлено значение параметра enable_post_data_reading в Off, для того чтобы PHP не производил парсинг POST-данных и они всегда были доступны для получения используя функцию file_get_contents("php://input"). Эта информация так же описана в следующем видео:


Видео так же доступно по ссылке: https://www.youtube.com/watch?v=8Syh9ufrQOg

Ниже приведено содержание PHP-скрипта с использованием которого производилось тестирование:

Передаваемая браузером информация при GET запросе

В результате тестирования установлено, что в браузере Firefox версии 122.0.1 повторный запрос(то есть после обновления страницы по нажатию клавиши F5) не приводит к изменению последовательности заголовков как реально переданных web-серверу, так и выведенных в инспекторе браузера Firefox.

Заголовки и их последовательность полученные web-сервером

Заголовки и их последовательность полученные web-сервером после нажатия F5

Заголовки и их последовательность в инспекторе Firefox

Передаваемая браузером информация при POST запросе без указания атрибута формы enctype

Полученная web-сервером строка с POST-данными функцией file_get_contents("php://input")

В случаи когда форма содержала одно input поле с именем "a", а в качестве значения этого поля передавалась последовательность "abcde"(без кавычек) var_dump(file_get_contents("php://input")) вернул следующий результат: string(7) "a=abcde".

Заголовки и их последовательность полученные web-сервером

Заголовки и их последовательность полученные web-сервером после нажатия F5

В результате тестирования было замечено, что в браузере Firefox версии 122.0.1 при повторной отправке формы методом POST(то-есть например по нажатию кнопки F5) заголовок Referer передаётся в другой последовательности, так при исходном запросе он передаётся после заголовка Connection, а при повторной отправке по F5 - заголовок Referer передаётся после заголовка Accept-Encoding. Порядок прочих заголовков, как и их содержание не изменяется.

Заголовки и их последовательность в инспекторе Firefox

Передаваемая браузером информация при POST запросе с указанием атрибута формы enctype равным "multipart/form-data"

Полученная web-сервером строка с POST-данными функцией file_get_contents("php://input")

Полученная web-сервером строка с POST-данными функцией file_get_contents("php://input")

Заголовки и их последовательность в инспекторе Firefox

При повторной передаче запроса, например по нажатию кнопки F5 на web-сервер передаются заголовки с аналогичным содержанием, при этом последовательности заголовка Referer изменится, а именно он будет передан после заголовка Accept-Encoding, а не после Connection как в случаи исходного заппроса. Последовательность заголовков и их содержание в инспекторе Firefox не изменится.

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: