Web Crypto APIを使用してHMAC-SHA256署名を実装し、署名情報をリクエストヘッダーに格納し、オリジンサーバーと連携してデータ完全性検証または身元認証を実現します。開発者は必要に応じてコードを変更できます。function uint8ArrayToHex(uint8Array) {return Array.prototype.map.call(uint8Array, x => ('0' + x.toString(16)).slice(-2)).join('');}async function generateHmac({ secretKey, message, hash }) {const encoder = new TextEncoder();const secretKeyBytes = encoder.encode(secretKey);const messageBytes = encoder.encode(message);const key = await crypto.subtle.importKey('raw', secretKeyBytes, { name: 'HMAC', hash }, false, ['sign']);const signature = await crypto.subtle.sign('HMAC', key, messageBytes);const signatureArray = new Uint8Array(signature);return uint8ArrayToHex(signatureArray);}async function handleRequest(request) {const secretKey = 'YOUR_SECRET_KEY';// 使用時に署名が必要な情報に変更してください。一般的には複数データの組み合わせです。例えば:タイムスタンプ+リクエスト関連情報など。const message = 'YOUR_MESSAGE';// hashはSHA-1、SHA-256、SHA-384、SHA-512のいずれかを取ります。const hmac = await generateHmac({ secretKey, message, hash: 'SHA-256' });request.headers.set('Authorization', `HMAC-SHA256 ${hmac}`);return fetch(request);}addEventListener('fetch', event => {event.passThroughOnException();event.respondWith(handleRequest(event.request));});
https://example.com/hmac)を入力すると、サンプル効果をプレビューできます。

フィードバック