コンテンツにスキップ

レスポンスの変更

不変のレスポンスプロパティを取得して変更するには、最初にコピーを作成します。

export default {
async fetch(request) {
/**
* @param {string} headerNameSrc 新しい値を取得するヘッダー
* @param {string} headerNameDst srcの値に基づいて設定するヘッダー
*/
const headerNameSrc = "foo"; //"Orig-Header"
const headerNameDst = "Last-Modified";
/**
* レスポンスプロパティは不変です。変更するには、新しい
* Responseを構築し、ResponseInitオブジェクトに修正されたstatusまたはstatusTextを渡します。
* レスポンスヘッダーは、headersの`set`メソッドを通じて変更できます。
*/
const originalResponse = await fetch(request);
// ステータスとステータステキストを変更しますが、ボディとヘッダーは保持します
let response = new Response(originalResponse.body, {
status: 500,
statusText: "some message",
headers: originalResponse.headers,
});
// fooプロパティを追加してレスポンスボディを変更します
const originalBody = await originalResponse.json();
const body = JSON.stringify({ foo: "bar", ...originalBody });
response = new Response(body, response);
// setメソッドを使用してヘッダーを追加します
response.headers.set("foo", "bar");
// 送信先ヘッダーをソースヘッダーの値に設定します
const src = response.headers.get(headerNameSrc);
if (src != null) {
response.headers.set(headerNameDst, src);
console.log(
`レスポンスヘッダー "${headerNameDst}" が "${response.headers.get(
headerNameDst,
)}" に設定されました`,
);
}
return response;
},
};