少なくとも、ステータス行と日付を含むヘッダーを提供する必要があります。
多くのプロトコルパーサーを書いた人として、私はあなたにお願いします、私のデジタルメタファーの膝の上で、あなたの好きなブラウザがあなたにそれをやめさせるという理由だけで仕様を完全に無視しないでください。
生成されるデータが正しい限り、機能が最小限のプログラムを作成することはまったく問題ありません。応答の先頭に3行追加するだけなので、これは大きな負担にはなりません。そして、それらの行の1つは空白です!応答データを仕様に一致させる2行のすばらしいコードを書くのに数分かかります。
実際に提供する必要のあるヘッダーは次のとおりです。
- ステータスライン(必須)
- 日付ヘッダー(必須)
- コンテンツタイプ(強くお勧めします)
- チャンクエンコーディングを使用している場合を除き、content-length(強く推奨)
- HTTP / 1.1ステータス行を返し、有効なコンテンツ長を提供していない場合、またはチャンクエンコーディングを使用していない場合は
Connection: close
、ヘッダーに追加します
- ヘッダーと本文を区切る空白行(必須)
応答とともにコンテンツタイプを送信しないことを選択できますが、クライアントがデータをどう処理するかを知らない可能性があることを理解する必要があります。クライアントは、それがどのような種類のデータであるかを推測する必要があります。ブラウザは、それを表示するのではなく、ダウンロードされたファイルとして扱うことを決定する場合があります。自動化されたプロセス(誰かのbash / curlスクリプト)は、データが予期されたタイプではないと合理的に判断する可能性があるため、データを破棄する必要があります。
HTTP/1.1仕様セクション3.1.1.5から。コンテンツタイプ:
ペイロード本文を含むメッセージを生成する送信者は、囲まれた表現の意図されたメディアタイプが送信者に不明でない限り、そのメッセージにContent-Typeヘッダーフィールドを生成する必要があります(SHOULD)。Content-Typeヘッダーフィールドが存在しない場合、受信者は「application / octet-stream」([RFC2046]、セクション4.5.1)のメディアタイプを想定するか、データを調べてそのタイプを判別できます(MAY)。