コンテンツにスキップ

オリジンの応答に基づいて異なるオリジンにルートする

元のリクエストに対する応答が `200 OK` またはリダイレクトでない場合、別のオリジンに送信します。

export default {
async fetch(request) {
// 元のリクエストをオリジンに送信
const response = await fetch(request);
// 応答が 200 OK またはリダイレクトでない場合、別のオリジンに送信
if (!response.ok && !response.redirected) {
// まず、元のリクエストをクローンして新しいリクエストを構築
const newRequest = new Request(request);
// 新しいオリジンで再ルーティングされたリクエストを識別するためのヘッダーを追加
newRequest.headers.set("X-Rerouted", "1");
// 元のURLをクローン
const url = new URL(request.url);
// 異なるオリジン/ホスト名にリクエストを送信
url.hostname = "example.com";
// オリジンから新しいリクエストに対する応答を提供
return await fetch(url, newRequest);
}
// 応答が 200 OK またはリダイレクトの場合、それを提供
return response;
},
};