コンテンツにスキップ

特定の値で Set-Cookie ヘッダーを上書きする

特定の `Set-Cookie` ヘッダーを取得し、特定の値で更新します。

export default {
async fetch(request) {
// オリジンからのレスポンスを受け取る
const response = await fetch(request);
// レスポンスヘッダーを修正するための新しい Headers オブジェクトを作成
const newHeaders = new Headers(response.headers);
// すべての Set-Cookie ヘッダーを取得
const cookies = response.headers.get("Set-Cookie");
if (cookies) {
// Set-Cookie ヘッダーを分割
const cookieArray = cookies.split(/,(?=\s*[^;]+=[^;]+)/g);
const updatedCookies = cookieArray.map((cookie) => {
// 例えば、通貨の値を GBP に置き換える
if (cookie.trim().startsWith("currency=")) {
return cookie.replace(/currency=[^;]+/, "currency=GBP");
}
return cookie;
});
// 既存の Set-Cookie ヘッダーを削除
newHeaders.delete("Set-Cookie");
// 更新された Set-Cookie ヘッダーを個別に追加
updatedCookies.forEach((cookie) => {
newHeaders.append("Set-Cookie", cookie.trim());
});
}
// 更新されたヘッダーを持つ修正されたレスポンスを返す
return new Response(response.body, {
status: response.status,
headers: newHeaders,
});
},
};