コンテンツにスキップ

ホットリンク保護

他のウェブサイトがあなたのコンテンツにリンクするのをブロックします。これは画像を保護するのに役立ちます。

export default {
async fetch(request) {
const HOMEPAGE_URL = "https://tutorial.cloudflareworkers.com/";
const PROTECTED_TYPE = "image/";
// 元のリクエストを取得
const response = await fetch(request);
// 画像の場合、Refererヘッダーに基づいてホットリンク保護を行います。
const referer = request.headers.get("Referer");
const contentType = response.headers.get("Content-Type") || "";
if (referer && contentType.startsWith(PROTECTED_TYPE)) {
// ホスト名が一致しない場合、ホットリンクです
if (new URL(referer).hostname !== new URL(request.url).hostname) {
// ユーザーをあなたのウェブサイトにリダイレクトします
return Response.redirect(HOMEPAGE_URL, 302);
}
}
// すべて正常です。通常通りレスポンスを返します。
return response;
},
};