Headers

Headersフェッチ API のインターフェイスで、 HTTP リクエスト/レスポンスヘッダー上のさまざまなアクションを実行します。アクションとしては、リクエストヘッダーのリストに対するヘッダーの取得、設定、追加、削除などがあります。

Headers オブジェクトは、初期状態では空で 0 個以上の名前と値のペアで構成される関連するヘッダーの連想リストを持っています。 append()を見てください)のようなメソッドを使用して、ヘッダーを追加することができます。このインターフェイスのすべてのメソッドで、ヘッダー名は大文字小文字を区別しないバイト列として照合されます。

セキュリティ上の理由から、いくつかのヘッダーはユーザーエージェントでしか制御できません。これには、禁止ヘッダー名禁止レスポンスヘッダー名があります。

ヘッダーは関連するガードも持っています。ガードは immutablerequestrequest-no-corsresponsenone のいずれかの値を取ります。これはヘッダーを変更する 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() を使用してヘッダーの値を返します。

js
const myHeaders = new Headers();

myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // 'text/xml' を返す。

同じことがコンストラクターにオブジェクトリテラルか配列リテラルの配列リテラルを渡すことでできます。

js
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

関連項目