Запрос
Всякий раз, когда страница отправляет запрос к сетевому ресурсу, следующая последовательность событий генерируется объектом Страница:
- page.on('request') генерируется при отправке запроса страницей.
- page.on('response') генерируется при получении статуса ответа и заголовков запроса.
- page.on('requestfinished') генерируется при загрузке тела ответа и завершении запроса.
Если запрос терпит неудачу в какой-либо момент, вместо события 'requestfinished' (и, возможно, вместо события 'response') генерируется событие page.on('requestfailed').
примечаниеОтветы с HTTP-ошибками, такие как 404 или 503, по-прежнему считаются успешными ответами с точки зрения HTTP, поэтому запрос завершится событием
'requestfinished'.
Если запрос получает ответ с перенаправлением, запрос успешно завершается событием requestfinished, и отправляется новый запрос на перенаправленный URL.
Методы
allHeaders
Объект, содержащий все HTTP-заголовки запроса, связанные с этим запросом. Имена заголовков приведены в нижнем регистре.
Использование
await request.allHeaders();
Возвращает
failure
Добавлен до версии v1.9Метод возвращает null, если запрос не потерпел неудачу, как сообщается событием requestfailed.
Использование
Пример протоколирования всех неудачных запросов:
page.on('requestfailed', request => {
console.log(request.url() + ' ' + request.failure().errorText);
}); Возвращает
frame
Добавлен до версии v1.9Возвращает Фрейм, который инициировал этот запрос.
Использование
const frameUrl = request.frame().url();
Возвращает
Подробности
Обратите внимание, что в некоторых случаях фрейм недоступен, и этот метод может вызвать исключение.
- Когда запрос исходит от Сервисного Рабочего. Вы можете использовать
request.serviceWorker()для проверки этого. - Когда запрос на навигацию отправлен до создания соответствующего фрейма. Вы можете использовать request.isNavigationRequest() для проверки этого.
Вот пример, который обрабатывает все эти случаи:
if (request.serviceWorker())
console.log(`request ${request.url()} from a service worker`);
else if (request.isNavigationRequest())
console.log(`request ${request.url()} is a navigation request`);
else
console.log(`request ${request.url()} from a frame ${request.frame().url()}`); headerValue
Возвращает значение заголовка, соответствующего имени. Имя нечувствительно к регистру.
Использование
await request.headerValue(name);
Аргументы
-
nameстрокаИмя заголовка.
Возвращает
headers
Добавлен до версии v1.9Объект с HTTP-заголовками запроса. Имена заголовков приведены в нижнем регистре. Обратите внимание, что этот метод не возвращает заголовки, связанные с безопасностью, включая заголовки, связанные с cookie. Вы можете использовать request.allHeaders() для получения полного списка заголовков, включающих cookie информацию.
Использование
request.headers();
Возвращает
headersArray
Массив со всеми HTTP-заголовками запроса, связанными с этим запросом. В отличие от request.allHeaders(), имена заголовков НЕ приведены в нижнем регистре. Заголовки с несколькими записями, такие как Set-Cookie, появляются в массиве несколько раз.
Использование
await request.headersArray();
Возвращает
isNavigationRequest
Добавлен до версии v1.9Является ли этот запрос навигацией фрейма?
Некоторые запросы на навигацию отправляются до создания соответствующего фрейма и, следовательно, не имеют request.frame().
Использование
request.isNavigationRequest();
Возвращает
method
Добавлен до версии v1.9Метод запроса (GET, POST и т. д.)
Использование
request.method();
Возвращает
postData
Добавлен до версии v1.9Тело запроса POST, если оно есть.
Использование
request.postData();
Возвращает
postDataBuffer
Добавлен до версии v1.9Тело запроса POST в двоичном формате, если оно есть.
Использование
request.postDataBuffer();
Возвращает
postDataJSON
Добавлен до версии v1.9Возвращает разобранное тело запроса для form-urlencoded и JSON в качестве резервного варианта, если таковой имеется.
Если ответ application/x-www-form-urlencoded, то возвращается объект пар ключ-значение. В противном случае он разбирается как JSON.
Использование
request.postDataJSON();
Возвращает
redirectedFrom
Добавлено до версии v1.9Запрос, перенаправленный сервером на этот, если таковой имеется.
Когда сервер отвечает с перенаправлением, Playwright создаёт новый Запрос объект. Два запроса связаны методами redirectedFrom() и redirectedTo(). При многократных перенаправлениях сервера, можно построить всю цепочку перенаправлений, многократно вызывая redirectedFrom().
Использование
Например, если сайт http://example.com перенаправляет на https://example.com:
const response = await page.goto('http://example.com');
console.log(response.request().redirectedFrom().url()); // 'http://example.com' Если сайт https://google.com не имеет перенаправлений:
const response = await page.goto('https://google.com');
console.log(response.request().redirectedFrom()); // null Возвращает
redirectedTo
Добавлено до версии v1.9Новый запрос, отправленный браузером, если сервер ответил с перенаправлением.
Использование
Этот метод является противоположностью request.redirectedFrom():
console.log(request.redirectedFrom().redirectedTo() === request); // true
Возвращает
resourceType
Добавлено до версии v1.9Содержит тип ресурса запроса, как он был воспринят движком рендеринга. ResourceType будет одним из следующих: document, stylesheet, image, media, font, script, texttrack, xhr, fetch, eventsource, websocket, manifest, other.
Использование
request.resourceType();
Возвращает
response
Добавлено до версии v1.9Возвращает соответствующий объект Ответ, или null если ответ не был получен из-за ошибки.
Использование
await request.response();
Возвращает
serviceWorker
Сервис Работник, выполняющий запрос.
Использование
request.serviceWorker();
Возвращает
Подробности
Этот метод доступен только в Chromium. Безопасно вызывать при использовании других браузеров, но он всегда будет null.
Запросы, исходящие из Service Worker, не имеют доступного request.frame().
sizes
Возвращает информацию о размерах ресурса для данного запроса.
Использование
await request.sizes();
Возвращает
-
Promise<Объект>
-
requestBodySizeчислоРазмер тела запроса (загрузка данных POST) в байтах. Устанавливается в 0, если тела не было.
-
requestHeadersSizeчислоОбщее количество байтов с начала сообщения HTTP-запроса до (включительно) двойного CRLF перед телом.
-
responseBodySizeчислоРазмер полученного тела ответа (кодированного) в байтах.
-
responseHeadersSizeчислоОбщее количество байтов с начала сообщения HTTP-ответа до (включительно) двойного CRLF перед телом.
-
timing
Добавлено до версии v1.9Возвращает информацию о времени выполнения ресурса для данного запроса. Большинство значений времени становятся доступными после получения ответа, responseEnd становится доступным по завершении запроса. Дополнительную информацию можно найти на странице API времени выполнения ресурса.
Использование
const requestFinishedPromise = page.waitForEvent('requestfinished');
await page.goto('http://example.com');
const request = await requestFinishedPromise;
console.log(request.timing()); Возвращает
-
Объект
-
startTimeчислоВремя начала запроса в миллисекундах, прошедшее с 00:00:00 1 января 1970 года по UTC
-
domainLookupStartчислоВремя непосредственно перед тем, как браузер начинает поиск имени домена для ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
domainLookupEndчислоВремя непосредственно после того, как браузер начинает поиск имени домена для ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
connectStartчислоВремя непосредственно перед тем, как пользовательский агент начинает установку соединения с сервером для получения ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
secureConnectionStartчислоВремя непосредственно перед тем, как браузер начинает процесс установления защищённого соединения. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
connectEndчислоВремя непосредственно перед тем, как пользовательский агент начинает установку соединения с сервером для получения ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
requestStartчислоВремя непосредственно перед тем, как браузер начинает запрашивать ресурс у сервера, кэша или локального ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
responseStartчислоВремя непосредственно после того, как браузер получает первый байт ответа от сервера, кэша или локального ресурса. Значение дано в миллисекундах относительно
startTime, -1, если не доступно. -
responseEndчислоВремя непосредственно после того, как браузер получает последний байт ресурса или непосредственно перед закрытием транспортного соединения, что произойдёт первым. Значение дано в миллисекундах относительно
startTime, -1, если не доступно.
-
url
Добавлено до версии v1.9URL запроса.
Использование
request.url();
Возвращает
© 2024 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-request