7.7 KiB
class: Route
Whenever a network route is set up with [method: Page.route
] or [method: BrowserContext.route
], the Route
object
allows to handle the route.
Learn more about networking.
async method: Route.abort
Aborts the route's request.
param: Route.abort.errorCode
errorCode
?<[string]>
Optional error code. Defaults to failed
, could be one of the following:
'aborted'
- An operation was aborted (due to user action)'accessdenied'
- Permission to access a resource, other than the network, was denied'addressunreachable'
- The IP address is unreachable. This usually means that there is no route to the specified host or network.'blockedbyclient'
- The client chose to block the request.'blockedbyresponse'
- The request failed because the response was delivered along with requirements which are not met ('X-Frame-Options' and 'Content-Security-Policy' ancestor checks, for instance).'connectionaborted'
- A connection timed out as a result of not receiving an ACK for data sent.'connectionclosed'
- A connection was closed (corresponding to a TCP FIN).'connectionfailed'
- A connection attempt failed.'connectionrefused'
- A connection attempt was refused.'connectionreset'
- A connection was reset (corresponding to a TCP RST).'internetdisconnected'
- The Internet connection has been lost.'namenotresolved'
- The host name could not be resolved.'timedout'
- An operation timed out.'failed'
- A generic failure occurred.
async method: Route.continue
- langs:
- alias-java: resume
- alias-python: continue_
Continues route's request with optional overrides.
await page.route('**/*', (route, request) => {
// Override headers
const headers = {
...request.headers(),
foo: 'bar', // set "foo" header
origin: undefined, // remove "origin" header
};
route.continue({headers});
});
page.route("**/*", route -> {
// Override headers
Map<String, String> headers = new HashMap<>(route.request().headers());
headers.put("foo", "bar"); // set "foo" header
headers.remove("origin"); // remove "origin" header
route.resume(new Route.ResumeOptions().setHeaders(headers));
});
async def handle(route, request):
# override headers
headers = {
**request.headers,
"foo": "bar" # set "foo" header
"origin": None # remove "origin" header
}
await route.continue_(headers=headers)
}
await page.route("**/*", handle)
def handle(route, request):
# override headers
headers = {
**request.headers,
"foo": "bar" # set "foo" header
"origin": None # remove "origin" header
}
route.continue_(headers=headers)
}
page.route("**/*", handle)
await page.RouteAsync("**/*", route =>
{
var headers = new Dictionary<string, string>(route.Request.Headers) { { "foo", "bar" } };
headers.Remove("origin");
route.ContinueAsync(headers);
});
option: Route.continue.url
url
<[string]>
If set changes the request URL. New URL must have same protocol as original one.
option: Route.continue.method
method
<[string]>
If set changes the request method (e.g. GET or POST)
option: Route.continue.postData
postData
<[string]|[Buffer]>
If set changes the post data of request
option: Route.continue.headers
headers
<[Object]<[string], [string]>>
If set changes the request HTTP headers. Header values will be converted to a string.
async method: Route.fulfill
Fulfills route's request with given response.
An example of fulfilling all requests with 404 responses:
await page.route('**/*', route => {
route.fulfill({
status: 404,
contentType: 'text/plain',
body: 'Not Found!'
});
});
page.route("**/*", route -> {
route.fulfill(new Route.FulfillOptions()
.setStatus(404)
.setContentType("text/plain")
.setBody("Not Found!"));
});
await page.route("**/*", lambda route: route.fulfill(
status=404,
content_type="text/plain",
body="not found!"))
page.route("**/*", lambda route: route.fulfill(
status=404,
content_type="text/plain",
body="not found!"))
await page.RouteAsync("**/*", route => route.FulfillAsync(
status: 404,
contentType: "text/plain",
body: "Not Found!"));
An example of serving static file:
await page.route('**/xhr_endpoint', route => route.fulfill({ path: 'mock_data.json' }));
page.route("**/xhr_endpoint", route -> route.fulfill(
new Route.FulfillOptions().setPath(Paths.get("mock_data.json"))));
await page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json"))
page.route("**/xhr_endpoint", lambda route: route.fulfill(path="mock_data.json"))
await page.RouteAsync("**/xhr_endpoint", route => route.FulfillAsync(new RouteFulfillOptions { Path = "mock_data.json" }));
option: Route.fulfill.status
status
<[int]>
Response status code, defaults to 200
.
option: Route.fulfill.headers
headers
<[Object]<[string], [string]>>
Response headers. Header values will be converted to a string.
option: Route.fulfill.contentType
contentType
<[string]>
If set, equals to setting Content-Type
response header.
option: Route.fulfill.body
- langs: js, python
body
<[string]|[Buffer]>
Response body.
option: Route.fulfill.body
- langs: csharp, java
body
<[string]>
Optional response body as text.
option: Route.fulfill.bodyBytes
- langs: csharp, java
bodyBytes
<[Buffer]>
Optional response body as raw bytes.
option: Route.fulfill.har
- langs: js
har
<[Object]>path
<[string]> Path to the HAR file.fallback
?<[RouteHARFallback]<"abort"|"continue"|"throw">> Behavior in the case where matching entry was not found in the HAR. Either [method: Route.abort
] the request, [method: Route.continue
] it, or throw an error. Defaults to "abort".
HAR file to extract the response from. If HAR file contains an entry with the matching url and HTTP method, then the entry's headers, status and body will be used to fulfill. An entry resulting in a redirect will be followed automatically. Individual fields such as headers can be overridden using fulfill options.
If path
is a relative path, then it is resolved relative to the current working directory.
option: Route.fulfill.harPath
- langs: csharp, java, python
- alias-python: har_path
harPath
<[path]>
HAR file to extract the response from. If HAR file contains an entry with the matching url and HTTP method, then the entry's headers, status and body will be used to fulfill. An entry resulting in a redirect will be followed automatically. Individual fields such as headers can be overridden using fulfill options.
If path
is a relative path, then it is resolved relative to the current working directory.
option: Route.fulfill.harFallback
- langs: csharp, java, python
- alias-python: har_fallback
harFallback
?<[RouteHARFallback]<"abort"|"continue"|"throw">>
Behavior in the case where matching entry was not found in the HAR. Either [method: Route.abort
] the request, [method: Route.continue
] it, or throw an error. Defaults to "abort".
option: Route.fulfill.path
path
<[path]>
File path to respond with. The content type will be inferred from file extension. If path
is a relative path, then it
is resolved relative to the current working directory.
option: Route.fulfill.response
response
<[APIResponse]>
[APIResponse] to fulfill route's request with. Individual fields of the response (such as headers) can be overridden using fulfill options.
method: Route.request
- returns: <[Request]>
A request to be routed.