このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

XMLHttpRequest: getAllResponseHeaders() メソッド

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

メモ: この機能はウェブワーカー内で利用可能ですが、サービスワーカーでは使用できません。

XMLHttpRequestgetAllResponseHeaders() メソッドは、すべてのレスポンスヘッダーを CRLF で区切った文字列として返し、レスポンスを受信していない場合は null を返します。

ネットワークエラーが発生した場合は、空文字列が返されます。

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

構文

js
getAllResponseHeaders() 

引数

なし。

返値

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

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

http
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 イベントの中でヘッダーを調べます。このコードは生のヘッダー文字列を取得する方法、またそれを個別のヘッダーの配列に変換する方法、そして配列からヘッダー名とその値のマップを生成する方法を示しています。

js
const request = new XMLHttpRequest(); request.open("GET", "foo.txt", true); request.send(); request.onreadystatechange = () => { if (request.readyState === request.HEADERS_RECEIVED) { // 生のヘッダー文字列を取得 const headers = request.getAllResponseHeaders(); // ヘッダー文字列を個別のヘッダーの // 配列に変換 const arr = headers.trim().split(/[\r\n]+/); // ヘッダー名と値のマップを生成 const headerMap = {}; arr.forEach((line) => { const parts = line.split(": "); const header = parts.shift(); const value = parts.join(": "); headerMap[header] = value; }); } }; 

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

js
const contentType = headerMap["content-type"]; 

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

仕様書

Specification
XMLHttpRequest
# the-getallresponseheaders()-method

ブラウザーの互換性

関連情報