Route
При настройке сетевого маршрута с помощью page.route() или browserContext.route() объект Route позволяет обрабатывать этот маршрут.
Подробнее о сетевых запросах.
Методы
abort
Добавлено до версии 1.9Прерывает запрос маршрута.
Использование
await route.abort(); await route.abort(errorCode);
Аргументы
-
errorCodestring (необязательно)Необязательный код ошибки. По умолчанию используется
failed. Возможные значения:-
'aborted'— Операция была прервана (по действию пользователя) -
'accessdenied'— В доступе к ресурсу, не являющемуся сетью, было отказано -
'addressunreachable'— IP-адрес недоступен. Обычно это означает, что маршрут к указанному узлу или сети отсутствует. -
'blockedbyclient'— Клиент решил заблокировать запрос. -
'blockedbyresponse'— Запрос не выполнен, поскольку ответ был отправлен с требованиями, которые не соблюдены (например, проверки предков для «X-Frame-Options» и «Content-Security-Policy»). -
'connectionaborted'— Время ожидания соединения истекло из-за того, что для отправленных данных не было получено подтверждение ACK. -
'connectionclosed'— Соединение было закрыто (соответствует TCP FIN). -
'connectionfailed'— Не удалось установить соединение. -
'connectionrefused'— В установлении соединения было отказано. -
'connectionreset'— Соединение было сброшено (соответствует TCP RST). -
'internetdisconnected'— Интернет-соединение было потеряно. -
'namenotresolved'— Не удалось разрешить имя узла. -
'timedout'— Время ожидания операции истекло. -
'failed'— Произошла общая ошибка.
-
Возвращает
continue
Добавлено до версии 1.9Отправляет запрос маршрута в сеть с необязательными переопределениями.
Использование
await page.route('**/*', async (route, request) => {
// Override headers
const headers = {
...request.headers(),
foo: 'foo-value', // set "foo" header
bar: undefined, // remove "bar" header
};
await route.continue({ headers });
}); Аргументы
-
optionsObject (необязательно)-
headersObject<string, string> (необязательно)Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.
-
methodstring (необязательно)Если задано, изменяет метод запроса (например, GET или POST).
-
postDatastring | Buffer | Serializable (необязательно)Если задано, изменяет данные запроса, отправляемые методом POST.
-
urlstring (необязательно)Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный.
-
Возвращает
Подробности
Параметр headers применяется как к перенаправляемому запросу, так и ко всем инициированным им перенаправлениям. Однако параметры url, method и postData применяются только к исходному запросу и не переносятся на перенаправленные запросы.
route.continue() немедленно отправляет запрос в сеть; другие подходящие обработчики вызваны не будут. Используйте route.fallback(), если нужно вызвать следующий подходящий обработчик в цепочке.
предупреждениеНекоторые заголовки запросов являются запрещёнными, и их нельзя переопределить (например,
Cookie,Host,Content-Lengthи другие; полный список см. на этой странице MDN). Если для запрещённого заголовка указано переопределение, оно будет проигнорировано, а вместо него будет использован исходный заголовок запроса.Чтобы задать пользовательские cookie, используйте browserContext.addCookies().
fallback
Продолжает обработку запроса маршрута с необязательными переопределениями. Этот метод похож на route.continue(), но перед отправкой запроса вызываются другие подходящие обработчики.
Использование
Если заданному шаблону соответствуют несколько маршрутов, они выполняются в порядке, обратном порядку их регистрации. Таким образом, последний зарегистрированный маршрут всегда может переопределить все предыдущие. В приведённом ниже примере запрос сначала обработает самый нижний обработчик, затем он передаст его предыдущему, а в конце первый зарегистрированный маршрут прервёт запрос.
await page.route('**/*', async route => {
// Runs last.
await route.abort();
});
await page.route('**/*', async route => {
// Runs second.
await route.fallback();
});
await page.route('**/*', async route => {
// Runs first.
await route.fallback();
}); Регистрация нескольких маршрутов полезна, когда нужно, чтобы разные обработчики обрабатывали разные типы запросов, например вызовы API и ресурсы страницы или GET-запросы и POST-запросы, как в примере ниже.
// Handle GET requests.
await page.route('**/*', async route => {
if (route.request().method() !== 'GET') {
await route.fallback();
return;
}
// Handling GET only.
// ...
});
// Handle POST requests.
await page.route('**/*', async route => {
if (route.request().method() !== 'POST') {
await route.fallback();
return;
}
// Handling POST only.
// ...
}); При передаче запроса следующему обработчику также можно изменить его; таким образом, промежуточный обработчик маршрута может изменить URL, метод, заголовки и postData запроса.
await page.route('**/*', async (route, request) => {
// Override headers
const headers = {
...request.headers(),
foo: 'foo-value', // set "foo" header
bar: undefined, // remove "bar" header
};
await route.fallback({ headers });
}); Используйте route.continue(), чтобы немедленно отправить запрос в сеть; в этом случае другие подходящие обработчики вызваны не будут.
Аргументы
-
optionsObject (необязательно)-
headersObject<string, string> (необязательно)Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.
-
methodstring (необязательно)Если задано, изменяет метод запроса (например, GET или POST).
-
postDatastring | Buffer | Serializable (необязательно)Если задано, изменяет данные запроса, отправляемые методом POST.
-
urlstring (необязательно)Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный. Изменение URL не влияет на выбор маршрута: все маршруты сопоставляются с исходным URL запроса.
-
Возвращает
fetch
Выполняет запрос и получает результат, не завершая его обработку, чтобы ответ можно было изменить, а затем завершить.
Использование
await page.route('https://dog.ceo/api/breeds/list/all', async route => {
const response = await route.fetch();
const json = await response.json();
json.message['big_red_dog'] = [];
await route.fulfill({ response, json });
}); Аргументы
-
optionsObject (необязательно)-
headersObject<string, string> (необязательно)Если задано, изменяет HTTP-заголовки запроса. Значения заголовков будут преобразованы в строки.
-
maxRedirectsnumber (необязательно)Максимальное количество перенаправлений запроса, которые будут выполнены автоматически. Если это количество будет превышено, возникнет ошибка. По умолчанию используется
20. Передайте0, чтобы не выполнять перенаправления. -
maxRetriesnumber (необязательно)Максимальное количество повторных попыток при сетевых ошибках. В настоящее время повторяется только ошибка
ECONNRESET. Повторные попытки не выполняются на основании кодов HTTP-ответов. Если лимит будет превышен, возникнет ошибка. По умолчанию используется0— повторных попыток нет. -
methodstring (необязательно)Если задано, изменяет метод запроса (например, GET или POST).
-
postDatastring | Buffer | Serializable (необязательно)Позволяет задать данные запроса, отправляемые методом POST. Если параметр data является объектом, он будет сериализован в строку JSON, а заголовок
content-typeбудет установлен в значениеapplication/json, если он не задан явно. В противном случае заголовокcontent-typeбудет установлен в значениеapplication/octet-stream, если он не задан явно. -
signalAbortSignal (необязательно)Позволяет отменить операцию с помощью
AbortSignal. Если сигнал отменён, операция будет прервана и вызовет ошибку. Обратите внимание: передача сигнала не отключает тайм-аут по умолчанию. Его можно изменить с помощью browserContext.setDefaultTimeout() или page.setDefaultTimeout(); передайтеtimeout: 0, чтобы полностью отключить тайм-аут. -
timeoutnumber (необязательно)Тайм-аут запроса в миллисекундах. По умолчанию используется
30000(30 секунд). Передайте0, чтобы отключить тайм-аут. -
urlstring (необязательно)Если задано, изменяет URL запроса. Новый URL должен использовать тот же протокол, что и исходный.
-
Возвращает
Подробности
Обратите внимание: параметр headers применяется как к полученному запросу, так и ко всем инициированным им перенаправлениям. Если нужно применить headers только к исходному запросу, но не к перенаправлениям, используйте вместо этого route.continue().
fulfill
Добавлено до версии 1.9Завершает запрос маршрута указанным ответом.
Использование
Пример завершения всех запросов ответами со статусом 404:
await page.route('**/*', async route => {
await route.fulfill({
status: 404,
contentType: 'text/plain',
body: 'Not Found!'
});
}); Пример обслуживания статического файла:
await page.route('**/xhr_endpoint', route => route.fulfill({ path: 'mock_data.json' })); Аргументы
-
optionsObject (необязательно)-
bodystring | Buffer (необязательно)Тело ответа.
-
contentTypestring (необязательно)Если задано, это равносильно установке заголовка ответа
Content-Type. -
headersObject<string, string> (необязательно)Заголовки ответа. Значения заголовков будут преобразованы в строки.
-
jsonSerializable (необязательно)Ответ в формате JSON. Если тип содержимого не задан, этот метод установит его в
application/json. -
pathstring (необязательно)Путь к файлу, содержимое которого будет отправлено в ответе. Тип содержимого определяется по расширению файла. Если
path— относительный путь, он вычисляется относительно текущего рабочего каталога. -
responseAPIResponse (необязательно)APIResponse, которым будет завершён запрос маршрута. Отдельные поля ответа (например, заголовки) можно переопределить с помощью параметров fulfill.
-
statusnumber (необязательно)Код состояния ответа; по умолчанию используется
200.
-
Возвращает
request
Добавлено до версии 1.9Запрос, подлежащий маршрутизации.
Использование
route.request();
Возвращает
© 2026 Microsoft
Licensed under the Apache License, Version 2.0.
https://playwright.dev/docs/api/class-route