Headers

Fetch APIHeaders インターフェースは、HTTP リクエストとレスポンスのヘッダ上のさまざまなアクションを実行します。これらのアクションには、取得や設定、追加、削除が含まれます。Headers オブジェクトは、最初は空で 0 個以上の名前と値のペアで構成される関連するヘッダリストを持っています。追加には append() を見てください)のようなメソッドを使用できます。このインタフェースのすべてのメソッドで、ヘッダ名は大文字と小文字を区別しないバイトシーケンスにマッチしています。

セキュリティ上の理由から、いくつかのヘッダはユーザーエージェントでしか制御できません。それらのヘッダには、forbidden header namesforbidden response header names が含まれます。

ヘッダは関連するガードも持っています。ガードは immutablerequestrequest-no-corsresponsenone のいずれかの値を取ります。これはヘッダを変更する set() メソッドと delete() メソッド、append() メソッドに影響を与えます。詳細は Guard を見てください。

Request.headers プロパティと Response.headers プロパティ経由で Headers オブジェクトを取得することも、Headers.Headers() コンストラクタを使用して新しい Headers オブジェクトを生成することもできます。

Headers を実装したオブジェクトは、entries() の代わりに直接 for...of 構文で使用できます: for (var p of myHeaders)for (var p of myHeaders.entries()) は同等です。

ノート: 利用できるヘッダについてはHTTP ヘッダ を参照してください。

コンストラクタ

Headers.Headers()
新しい Headers オブジェクトを生成する。

メソッド

Headers.append()
Headers オブジェクト内の既存のヘッダに新しい値を追加するか、まだ存在しない場合はヘッダを追加する。
Headers.delete()
Headers オブジェクトからヘッダを削除する。
Headers.entries()
このオブジェクトに含まれるすべてのキー/値 ペアを通して処理するための iterator を返す。
Headers.get()
Headers オブジェクト内から指定したヘッダのすべての値の ByteString を返す。
Headers.has()
Headers オブジェクトが特定のヘッダを含むかどうかを示す boolean 値を返す。
Headers.keys()
このオブジェクトに含まれるキー/値 ペアのすべてのキーを通して処理するための iterator を返す。
Headers.set()
オブジェクト内の既存のヘッダに新しい値を設定するか、まだ存在しない場合はヘッダを追加する。
Headers.values()
このオブジェクトに含まれるキー/値 ペアのすべての値を通して処理するための iterator を返す。

ノートHeaders.set()Headers.append() の明確な違いは、複数の値を受け入れる特定のヘッダが既に存在しているときの挙動です。Headers.set() は既存の値を新しい値で上書きしますが、Headers.append() は既存の値の末尾に新しい値を追加します。サンプルコードはそれぞれの専用ページで確認してください。

ノート有効な HTTP ヘッダ名 ではない名前の参照を渡そうとすると、すべての Headers メソッドは TypeError をスローします。ヘッダに immutable Guard がある場合、変更操作は TypeError をスローします。そのほかの場外の場合は、単にに失敗します。

ノート:ヘッダーをイテレートする時、自動的に辞書順への並び替えが行われ、重複する名前は結合されます。

廃止になった機能

Headers.getAll()
Headers オブジェクト内で指定されたヘッダのすべての値を配列として返す。このメソッドは規格から削除されており、 Headers.get() は現在では与えられた名前に一致する最初のものを返します。

次のコードスニペットでは、Headers() コンストラクタを使用して新しいヘッダを生成し、append() を使用して新しいヘッダを追加しています。その後、get() を使用してヘッダの値を返しています:

var myHeaders = new Headers();

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

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

var 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'

仕様

仕様 状態 コメント
Fetch
Headers の定義
現行の標準

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
HeadersChrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤18Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 完全対応 10.1WebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 完全対応 44Opera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
Headers() constructor
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 ≤79
完全対応 ≤79
完全対応 ≤79
無効
無効 From version ≤79: this feature is behind the Experimental Web Platform Features preference.
Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 完全対応 10.1WebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
append
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 14Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 完全対応 10.1WebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
delete
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 14Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 完全対応 10.1WebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
entries
実験的
Chrome 完全対応 45Edge 完全対応 16Firefox 完全対応 44IE 未対応 なしOpera 完全対応 32Safari ? WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 44Opera Android 完全対応 32Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
get
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 14Firefox 完全対応 52
補足
完全対応 52
補足
補足 Prior to Firefox 52, get() only returned the first value in the specified header, with getAll() returning all values. From 52 onwards, get() now returns all values and getAll() has been deleted.
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 完全対応 10.1WebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
getAll
実験的非推奨非標準
Chrome 未対応 42 — 60Edge 未対応 ≤18 — 79Firefox 未対応 39 — 52
未対応 39 — 52
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 未対応 29 — 47Safari 未対応 なしWebView Android 未対応 42 — 60Chrome Android 未対応 42 — 60Firefox Android 未対応 なしOpera Android 未対応 29 — 44Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
has
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 14Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 未対応 なしWebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
keys
実験的
Chrome 完全対応 45Edge 完全対応 16Firefox 完全対応 44IE 未対応 なしOpera 完全対応 32Safari ? WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 44Opera Android 完全対応 32Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
Lexicographical sorting, and values from duplicate header names combined when iterated.Chrome ? Edge ? Firefox 完全対応 44IE 未対応 なしOpera 完全対応 28Safari 未対応 なしWebView Android ? Chrome Android ? Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
set
実験的
Chrome 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Edge 完全対応 14Firefox 完全対応 39
完全対応 39
完全対応 34
無効
無効 From version 34: this feature is behind the dom.fetch.enabled preference. To change preferences in Firefox, visit about:config.
IE 未対応 なしOpera 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari 未対応 なしWebView Android 完全対応 42Chrome Android 完全対応 42
完全対応 42
完全対応 41
無効
無効 From version 41: this feature is behind the Experimental Web Platform Features preference. To change preferences in Chrome, visit chrome://flags.
Firefox Android 未対応 なしOpera Android 完全対応 29
完全対応 29
完全対応 28
無効
無効 From version 28: this feature is behind the Experimental Web Platform Features preference.
Safari iOS 未対応 なしSamsung Internet Android 完全対応 4.0
values
実験的
Chrome 完全対応 45Edge 完全対応 16Firefox 完全対応 44IE 未対応 なしOpera 完全対応 32Safari ? WebView Android 完全対応 45Chrome Android 完全対応 45Firefox Android 完全対応 44Opera Android 完全対応 32Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連項目