Перейти к основному содержимому

Request

Когда страница отправляет запрос на сетевой ресурс, происходит следующая последовательность событий, генерируемых Page:

  • Page.Request генерируется, когда запрос отправляется страницей.
  • Page.Response генерируется, когда/если получены статус и заголовки ответа на запрос.
  • Page.RequestFinished генерируется, когда тело ответа загружено и запрос завершен.

Если запрос не удается на каком-то этапе, то вместо события 'requestfinished' (а возможно и вместо события 'response') генерируется событие Page.RequestFailed.

примечание

Ответы с HTTP ошибками, такие как 404 или 503, все равно считаются успешными с точки зрения HTTP, поэтому запрос завершится событием 'requestfinished'.

Если запрос получает ответ 'redirect', запрос успешно завершается событием requestfinished, и новый запрос отправляется на перенаправленный URL.


Методы​

AllHeadersAsync​

Добавлено в: v1.15 request.AllHeadersAsync

Объект со всеми HTTP заголовками запроса, связанными с этим запросом. Имена заголовков приведены к нижнему регистру.

Использование

await Request.AllHeadersAsync();

Возвращает


Failure​

Добавлено до v1.9 request.Failure

Метод возвращает null, если только этот запрос не завершился неудачей, как сообщается событием requestfailed.

Использование

Пример логирования всех неудачных запросов:

page.RequestFailed += (_, request) =>
{
Console.WriteLine(request.Failure);
};

Возвращает


Frame​

Добавлено до v1.9 request.Frame

Возвращает Frame, который инициировал этот запрос.

Использование

var frameUrl = request.Frame.Url;

Возвращает

Детали

Обратите внимание, что в некоторых случаях фрейм недоступен, и этот метод вызовет исключение.

  • Когда запрос исходит из Service Worker. Вы можете использовать request.serviceWorker(), чтобы это проверить.
  • Когда запрос навигации отправляется до создания соответствующего фрейма. Вы можете использовать Request.IsNavigationRequest, чтобы это проверить.

Вот пример, который обрабатывает все случаи:


HeaderValueAsync​

Добавлено в: v1.15 request.HeaderValueAsync

Возвращает значение заголовка, соответствующего имени. Имя не чувствительно к регистру.

Использование

await Request.HeaderValueAsync(name);

Аргументы

  • name string#

    Имя заголовка.

Возвращает


Headers​

Добавлено до v1.9 request.Headers

Объект с HTTP заголовками запроса. Имена заголовков приведены к нижнему регистру. Обратите внимание, что этот метод не возвращает заголовки, связанные с безопасностью, включая заголовки, связанные с cookie. Вы можете использовать Request.AllHeadersAsync() для полного списка заголовков, включая информацию о cookie.

Использование

Request.Headers

Возвращает


HeadersArrayAsync​

Добавлено в: v1.15 request.HeadersArrayAsync

Массив со всеми HTTP заголовками запроса, связанными с этим запросом. В отличие от Request.AllHeadersAsync(), имена заголовков НЕ приведены к нижнему регистру. Заголовки с несколькими записями, такие как Set-Cookie, появляются в массиве несколько раз.

Использование

await Request.HeadersArrayAsync();

Возвращает


IsNavigationRequest​

Добавлено до v1.9 request.IsNavigationRequest

Является ли этот запрос управляющим навигацией фрейма.

Некоторые запросы навигации отправляются до создания соответствующего фрейма, и поэтому Request.Frame недоступен.

Использование

Request.IsNavigationRequest

Возвращает


Method​

Добавлено до v1.9 request.Method

Метод запроса (GET, POST и т.д.)

Использование

Request.Method

Возвращает


PostData​

Добавлено до v1.9 request.PostData

Тело запроса, если оно есть.

Использование

Request.PostData

Возвращает


PostDataBuffer​

Добавлено до v1.9 request.PostDataBuffer

Тело запроса в бинарной форме, если оно есть.

Использование

Request.PostDataBuffer

Возвращает


PostDataJSON​

Добавлено в: v1.12 request.PostDataJSON

Возвращает разобранное тело запроса для form-urlencoded и JSON в качестве резервного варианта, если оно есть.

Когда ответ application/x-www-form-urlencoded, возвращается объект ключ/значение значений. В противном случае он будет разобран как JSON.

Использование

Request.PostDataJSON

Возвращает


RedirectedFrom​

Добавлено до v1.9 request.RedirectedFrom

Запрос, который был перенаправлен сервером на этот, если таковой имеется.

Когда сервер отвечает перенаправлением, Playwright создает новый объект Request. Два запроса связаны методами redirectedFrom() и redirectedTo(). Когда произошло несколько перенаправлений сервера, можно построить всю цепочку перенаправлений, многократно вызывая redirectedFrom().

Использование

Например, если веб-сайт http://example.com перенаправляет на https://example.com:

var response = await page.GotoAsync("http://www.microsoft.com");
Console.WriteLine(response.Request.RedirectedFrom?.Url); // http://www.microsoft.com

Если веб-сайт https://google.com не имеет перенаправлений:

var response = await page.GotoAsync("https://www.google.com");
Console.WriteLine(response.Request.RedirectedFrom?.Url); // null

Возвращает


RedirectedTo​

Добавлено до v1.9 request.RedirectedTo

Новый запрос, отправленный браузером, если сервер ответил перенаправлением.

Использование

Этот метод является противоположностью Request.RedirectedFrom:

Console.WriteLine(request.RedirectedFrom?.RedirectedTo == request); // True

Возвращает


ResourceType​

Добавлено до v1.9 request.ResourceType

Содержит тип ресурса запроса, как он был воспринят движком рендеринга. ResourceType будет одним из следующих: document, stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other.

Использование

Request.ResourceType

Возвращает


ResponseAsync​

Добавлено до v1.9 request.ResponseAsync

Возвращает соответствующий объект Response, или null, если ответ не был получен из-за ошибки.

Использование

await Request.ResponseAsync();

Возвращает


SizesAsync​

Добавлено в: v1.15 request.SizesAsync

Возвращает информацию о размере ресурса для данного запроса.

Использование

await Request.SizesAsync();

Возвращает

  • Sizes#
    • requestBodySize int

      Размер тела запроса (POST данных) в байтах. Установлено в 0, если тела не было.

    • requestHeadersSize int

      Общее количество байтов от начала HTTP сообщения запроса до (и включая) двойной CRLF перед телом.

    • responseBodySize int

      Размер полученного тела ответа (закодированного) в байтах.

    • responseHeadersSize int

      Общее количество байтов от начала HTTP сообщения ответа до (и включая) двойной CRLF перед телом.


Timing​

Добавлено до v1.9 request.Timing

Возвращает информацию о времени ресурса для данного запроса. Большинство значений времени становятся доступны при получении ответа, responseEnd становится доступным, когда запрос завершается. Подробнее см. Resource Timing API.

Использование

var request = await page.RunAndWaitForRequestFinishedAsync(async () =>
{
await page.GotoAsync("https://www.microsoft.com");
});
Console.WriteLine(request.Timing.ResponseEnd);

Возвращает

  • Timing#
    • startTime [float]

      Время начала запроса в миллисекундах, прошедших с 1 января 1970 года 00:00:00 UTC

    • domainLookupStart [float]

      Время непосредственно перед тем, как браузер начинает поиск доменного имени для ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • domainLookupEnd [float]

      Время непосредственно после того, как браузер начинает поиск доменного имени для ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • connectStart [float]

      Время непосредственно перед тем, как пользовательский агент начинает устанавливать соединение с сервером для получения ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • secureConnectionStart [float]

      Время непосредственно перед тем, как браузер начинает процесс рукопожатия для защиты текущего соединения. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • connectEnd [float]

      Время непосредственно перед тем, как пользовательский агент начинает устанавливать соединение с сервером для получения ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • requestStart [float]

      Время непосредственно перед тем, как браузер начинает запрашивать ресурс с сервера, из кэша или локального ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • responseStart [float]

      Время непосредственно после того, как браузер получает первый байт ответа от сервера, из кэша или локального ресурса. Значение указано в миллисекундах относительно startTime, -1, если недоступно.

    • responseEnd [float]

      Время непосредственно после того, как браузер получает последний байт ресурса или непосредственно перед закрытием транспортного соединения, в зависимости от того, что произойдет раньше. Значение указано в миллисекундах относительно startTime, -1, если недоступно.


Url​

Добавлено до v1.9 request.Url

URL запроса.

Использование

Request.Url

Возвращает