- main
- manifest
- deps
- main
- Install
- Run
async function handler(event) {
let req = event.request;
let backendResponse;
if (req.method === 'GET' || req.method === 'HEAD') {
let url = req.url;
let method = req.method;
let headers = req.headers;
let req1 = new Request(url, { method, headers });
backendResponse = await fetch(req1, {
backend: "origin_0"
});
if (backendResponse.status === 403 || (backendResponse.status >= 500 && backendResponse.status < 600)) {
let url = new URL(req.url);
url.pathname = '/status/200';
console.log("Failing over to the secondary backend...");
let req2 = new Request(url, { method, headers });
backendResponse = await fetch(req2, {
backend: "origin_1"
});
}
} else {
backendResponse = await fetch(req, {
backend: "origin_0"
});
}
return backendResponse;
}
addEventListener("fetch", event => event.respondWith(handler(event)));