XMLHttpRequest.getAllResponseHeaders()

XMLHttpRequestgetAllResponseHeaders() メソッドは、すべてのレスポンスヘッダーを CRLF で区切った文字列として返し、レスポンスを受信していない場合は null を返します。ネットワークエラーが発生した場合は、空文字列が返されます。

メモ: マルチパートリクエストでは、これはリクエストの元のチャンネルではなく、現在の部分を返します。

構文

var headers = XMLHttpRequest.getAllResponseHeaders();

引数

なし。

返値

CRLF で区切ったすべてのレスポンスヘッダー (フィールド名が Set-Cookie または Set-Cookie2 のものを除く) を表す ByteString、またはレスポンスを受信していなければ null です。ネットワークエラーが発生した場合は、空文字列が返されます。

生のヘッダー文字列がどのように見えるかの例です。

date: Fri, 08 Dec 2017 21:04:30 GMT\r\n
content-encoding: gzip\r\n
x-content-type-options: nosniff\r\n
server: meinheld/0.6.1\r\n
x-frame-options: DENY\r\n
content-type: text/html; charset=utf-8\r\n
connection: keep-alive\r\n
strict-transport-security: max-age=63072000\r\n
vary: Cookie, Accept-Encoding\r\n
content-length: 6502\r\n
x-xss-protection: 1; mode=block\r\n

各行はキャリッジリターンとラインフィード文字 (\r\n) の両方で終わります。これらはそれぞれのヘッダーを区切る基本的なデリミターです。

メモ: 最近のブラウザーでは、ヘッダー名は最新の仕様書にあるように、すべて小文字で返されます。

この例では、リクエストの readystatechange イベントハンドラーである XMLHttpRequest.onreadystatechange の中でヘッダーを調べます。このコードは生のヘッダー文字列を取得する方法、またそれを個別のヘッダーの配列に変換する方法、そして配列からヘッダー名とその値のマップを生成する方法を示しています。

var request = new XMLHttpRequest();
request.open("GET", "foo.txt", true);
request.send();

request.onreadystatechange = function() {
  if(this.readyState == this.HEADERS_RECEIVED) {

    // 生のヘッダー文字列を取得
    var headers = request.getAllResponseHeaders();

    // ヘッダー文字列を個別のヘッダーの
    // 配列に変換
    var arr = headers.trim().split(/[\r\n]+/);

    // ヘッダー名と値のマップを生成
    var headerMap = {};
    arr.forEach(function (line) {
      var parts = line.split(': ');
      var header = parts.shift();
      var value = parts.join(': ');
      headerMap[header] = value;
    });
  }
}

いったんこれを行えば、次のようなことができます。

var contentType = headerMap["content-type"];

これは Content-Type ヘッダーの値を変数 contentType の中に入れます。

仕様書

仕様書 状態 備考
XMLHttpRequest
getAllResponseHeaders() の定義
現行の標準 WHATWG living standard

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
基本対応Chrome 完全対応 1Edge 完全対応 12Firefox 完全対応 4
補足
完全対応 4
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
IE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4
補足
完全対応 4
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
Header names returned in all lower caseChrome 完全対応 ありEdge 未対応 なしFirefox 完全対応 64IE 未対応 なしOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 未対応 なしFirefox Android 完全対応 64Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

このページの貢献者: mdnwebdocs-bot, mfuji09
最終更新者: mdnwebdocs-bot,