Skip to content

Override a `Set-Cookie` header with a certain value

Get a specific `Set-Cookie` header and update it with a certain value.
export default {
async fetch(request) {
// Receive response from the origin
const response = await fetch(request)
// Create a new Headers object to modify response headers
const newHeaders = new Headers(response.headers);
// Get all Set-Cookie headers
const cookies = response.headers.get("Set-Cookie");
if (cookies) {
// Split the Set-Cookie headers
const cookieArray = cookies.split(/,(?=\s*[^;]+=[^;]+)/g);
const updatedCookies = cookieArray.map(cookie => {
// For example, replace the currency value with GBP
if (cookie.trim().startsWith("currency=")) {
return cookie.replace(/currency=[^;]+/, "currency=GBP");
}
return cookie;
});
// Delete the existing Set-Cookie headers
newHeaders.delete("Set-Cookie");
// Add the updated Set-Cookie headers individually
updatedCookies.forEach(cookie => {
newHeaders.append("Set-Cookie", cookie.trim());
});
}
// Return the modified response with updated headers
return new Response(response.body, {
status: response.status,
headers: newHeaders
});
},
};