Headers
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.
* Some parts of this feature may have varying levels of support.
Headers
はフェッチ API のインターフェイスで、 HTTP リクエスト/レスポンスヘッダー上のさまざまなアクションを実行します。アクションとしては、リクエストヘッダーのリストに対するヘッダーの取得、設定、追加、削除などがあります。
Headers
オブジェクトは、初期状態では空で 0 個以上の名前と値のペアで構成される関連するヘッダーの連想リストを持っています。 append()
(例を見てください)のようなメソッドを使用して、ヘッダーを追加することができます。このインターフェイスのすべてのメソッドで、ヘッダー名は大文字小文字を区別しないバイト列として照合されます。
セキュリティ上の理由から、いくつかのヘッダーはユーザーエージェントでしか制御できません。これには、禁止ヘッダー名と禁止レスポンスヘッダー名があります。
ヘッダーは関連するガードも持っています。ガードは immutable
、request
、request-no-cors
、response
、none
のいずれかの値を取ります。これはヘッダーを変更する set()
メソッドと delete()
メソッド、append()
メソッドに影響を与えます。詳細はガードを見てください。
Headers
オブジェクトは Request.headers
および Response.headers
プロパティ経由で取得することができ、また新しい Headers
オブジェクトを Headers()
コンストラクターで生成することもできます。
Headers
を実装したオブジェクトは、entries()
の代わりに直接 for...of
構文で使用することができます。 for (const p of myHeaders)
と for (const p of myHeaders.entries())
は同等です。
メモ: 利用できるヘッダーについてはHTTP ヘッダー を参照してください。
コンストラクター
Headers()
-
新しい
Headers
オブジェクトを生成します。
インスタンスメソッド
Headers.append()
-
Headers
オブジェクト内の既存のヘッダーに新しい値を追加するか、まだ存在しない場合はヘッダーを追加します。 Headers.delete()
-
Headers
オブジェクトからヘッダーを削除します。 Headers.entries()
-
このオブジェクトに含まれるすべてのキー/値のペアを通して処理するための
iterator
を返します。 Headers.forEach()
-
指定された関数を、この
Headers
オブジェクトのキー/値のペアそれぞれに対して一度ずつ実行します。 Headers.get()
-
Headers
オブジェクトにある指定された名前を持つ、ヘッダーのすべての値を示す文字列の配列を返します。 Headers.has()
-
Headers
オブジェクトが特定のヘッダーを含むかどうかを示す値を、論理値で返します。 Headers.keys()
-
このオブジェクトに含まれるキー/値のペアのすべてのキーを通して処理するための イテレーターを返します。
Headers.set()
-
オブジェクト内の既存のヘッダーに新しい値を設定するか、まだ存在しない場合はヘッダーを追加する。
Headers.values()
-
このオブジェクトに含まれるキー/値のペアのすべての値を通して処理するためのイテレーターを返します。
メモ: Headers.set()
と Headers.append()
の明確な違いは、複数の値を受け入れる特定のヘッダーが既に存在しているときの挙動です。Headers.set()
は既存の値を新しい値で上書きしますが、Headers.append()
は既存の値の末尾に新しい値を追加します。サンプルコードはそれぞれの専用ページで確認してください。
メモ:
すべての Headers メソッドで、有効な HTTP ヘッダー名 ではない名前の参照を渡そうとすると TypeError
が発生します。ヘッダーに immutable ガードがある場合、変更操作をしようとすると TypeError
が発生します。します。そのほかの場外の場合は、単に失敗します。
メモ: ヘッダーを反復処理する時は、自動的に辞書順への並び替えが行われ、重複する名前は結合されます。
例
次のコードスニペットでは、Headers()
コンストラクターを使用して新しいヘッダーを生成し、append()
を使用して新しいヘッダーを追加しています。その後、 get()
を使用してヘッダーの値を返します。
const myHeaders = new Headers();
myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // 'text/xml' を返す。
同じことがコンストラクターにオブジェクトリテラルか配列リテラルの配列リテラルを渡すことでできます。
let myHeaders = new Headers({
"Content-Type": "text/xml",
});
// or, using an array of arrays:
myHeaders = new Headers([["Content-Type", "text/xml"]]);
myHeaders.get("Content-Type"); // should return 'text/xml'
仕様書
Specification |
---|
Fetch Standard # headers-class |
ブラウザーの互換性
BCD tables only load in the browser