async function handleRequest(request) {// Refererを取得します。const referer = request.headers.get('Referer');// Refererが空の場合、アクセスを禁止します。if (!referer) {return new Response(null, { status: 403 });}// Referer許可リストを設定します。const urlInfo = new URL(request.url);const refererRegExp = new RegExp(`^https?:\\/\\/${urlInfo.hostname}\\/t-[0-9a-z]{10}\\/.*`)// Refererが許可リストにない場合、アクセスを禁止します。if (!refererRegExp.test(referer)) {return new Response(null, { status: 403 });}// 通常のリクエストでは、EdgeOneノードのキャッシュにアクセスするか、オリジンサーバーへアクセスします。return fetch(request);}addEventListener('fetch', event => {// 関数コードが未処理の例外をスローした場合、エッジ関数はこのリクエストをオリジンサーバーへ転送します。event.passThroughOnException();event.respondWith(handleRequest(event.request));});
https://example.com/images/ef-1.jpeg)を入力すると、サンプル効果をプレビューできます。Refererがhttps://example.com/t-0123456789/pageの場合、エッジ関数は画像を正常に応答します。
Refererが許可リストにない場合、エッジ関数はこれを不正リンクと認識し、403ステータスコードを返します。
フィードバック