HTTP バージョン 23.1

OCAPI のリクエストとレスポンスでは、デフォルトで HTTP バージョン 1.1 が使用されるようになっています。ただし、プライマリインスタンスグループ (Production (本番)、Staging (ステージング)、Development (開発)) または On-Demand Sandbox (オンデマンドのサンドボックス) (ODS) に属するインスタンスは HTTP バージョン 2 を使用できます。このページでは、HTTP ヘッダーの形式がバージョンによってどのように異なるかについて説明します。

HTTP/1.1 では、RFC 2616, Hypertext Transfer Protocol — HTTP/1.1, Section 4.2 で定められているとおり、ヘッダー名では大文字と小文字は区別されません:

各ヘッダーフィールドは、名前と、それに続くコロン (":")、フィールド値で構成されています。フィールド名では大文字と小文字は区別されません。

つまり、サーバーやクライアントで特定の形式を想定してはなりません。このため、レスポンスに、大文字と小文字が組み合わされた形式のヘッダー名が含まれていることがあります。

HTTP/2 では、RFC 7540, Hypertext Transfer Protocol Version 2 (HTTP/2), Section 8.1.2 で定められているとおり、ヘッダー名では小文字を使用する必要があります:

HTTP/1.x と同様に、ヘッダーフィールド名は ASCII 文字の文字列であり、大文字と小文字は区別されません。 ただし、ヘッダーフィールド名は、HTTP/2 でエンコードする前に小文字に変換する必要があります。リクエストやレスポンス に大文字のヘッダーフィールド名が含まれている場合、形式が正しくないとして処理する必要があります (Section 8.1.2.6)。

つまり、リクエストに含まれている大文字のヘッダー名は受け入れてはならないため、レスポンスには常に小文字の名前が含まれることになります。

通常、HTTP/2 に対応する HTTP クライアントは形式の変換を自動的に行います。ただし、1999 年に HTTP/1.1 が公開されてからずっと、ヘッダー名では大文字と小文字が区別されていないことに注意してください。このため、大文字小文字を区別して動作する (大文字または小文字を想定する) コードを修正して、将来的に HTTP 標準の問題が起こらないようにする必要があります。