コンテンツの最適化とキャッシュ制御、セキュリティの強化、パフォーマンスの最適化などのシナリオで、レスポンスヘッダーを変更できます。このトピックでは、この機能を理解するのに役立つ簡単な例を示します。
例
期待される結果: クライアントが Edge Routine にリクエストを送信すると、クライアントではなく Edge Routine がサードパーティの Web サイトにリクエストを送信します。レスポンスを受信した後、Edge Routine はレスポンスヘッダーに対して、フィールドの追加、削除、変更などの一連のカスタム操作を実行し、変更されたレスポンスをクライアントに返します。
言語タイプ:
Javascript
サンプルコード:
/** * このサンプルは、Edge Routine がサードパーティの Web サイトリソースを取得し、レスポンスヘッダーを変更してから、変更されたレスポンスヘッダーをクライアントに返すことを示しています。 * テスト中は、URL を独自の URL に置き換えてください。 */ // リクエストされるサードパーティ Web サイトの URL を定義します。 const url = "https://aliyun.com" // リクエストを処理するために handleRequest という名前の非同期関数を定義します。 async function handleRequest(request) { // fetch 関数を使用して、サードパーティの Web サイトへのリクエストを開始し、レスポンスを取得します。 const response = await fetch(url) // 新しいレスポンスオブジェクトを作成し、レスポンスの本文のみをコピーします。 // response.body を新しいレスポンスの本文として使用し、既存のレスポンスステータスとヘッダー情報を保持します。 const newResponse = new Response(response.body, response) // 「custom-ER-add」という名前のカスタムレスポンスヘッダーを追加し、値を「ER header」に設定します。 newResponse.headers.append("custom-ER-add", "ER header") // 「custom-ER-delete」という名前のカスタムレスポンスヘッダーを削除します。 newResponse.headers.delete("custom-ER-delete") // 「custom-ER-reset」という名前のカスタムレスポンスヘッダーの値を「ER header」に変更します。 newResponse.headers.set("custom-ER-reset", "ER header") // 変更されたレスポンスを返します。 return newResponse } // Edge Routine の標準 API であるデフォルトの fetch 関数をエクスポートします。 export default { fetch(request) { // handleRequest 関数を呼び出して、リクエストを処理します。 return handleRequest(request) } }
デプロイ結果
クライアントの元のレスポンスヘッダー:
クライアントの次のレスポンスヘッダーを例として使用します。
# クライアントの元のレスポンスヘッダー # レスポンスコンテンツタイプは HTML 形式で、エンコーディングには UTF-8 が使用されます。 Content-Type: text/html; charset=UTF-8 # レスポンス本文の長さは 1,234 バイトです。 Content-Length: 1234 # サーバーソフトウェアは Apache です。 Server: Apache # カスタムレスポンスヘッダーを追加し、値を「original-value」に設定します。ヘッダーは削除される場合があります。 custom-ER-delete: original-value # カスタムレスポンスヘッダーを追加し、値を「original-value」に設定します。ヘッダーは変更される場合があります。 custom-ER-reset: original-value
レスポンスヘッダーの変更:
レスポンスヘッダーに関する情報の追加、削除、変更を行います。
追加
custom-ER-add
フィールドcustom-ER-add
フィールドを元のレスポンスヘッダーに追加します。Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Server: Apache custom-ER-delete: original-value custom-ER-reset: original-value custom-ER-add: ER header
削除する
カスタム ER 削除
フィールドcustom-ER-add
フィールドが追加された後、custom-ER-delete
フィールドをレスポンスヘッダーから削除します。Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Server: Apache custom-ER-reset: original-value custom-ER-add: ER header
変更する
custom-ER-reset
フィールドcustom-ER-delete
フィールドが削除された後、custom-ER-reset
フィールドを変更します。Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Server: Apache custom-ER-add: ER header custom-ER-reset: ER header
クライアントが受信するレスポンスヘッダー:
Content-Type: text/html; charset=UTF-8 Content-Length: 1234 Server: Apache custom-ER-add: ER header custom-ER-reset: ER header