ファイルをダウンロードする際のHTTPレスポンスヘッダについて教えてください。
私が PHP を使ってファイルをダウンロードする方法を学んでいたとき、教科書には 3 つの http メッセージ ヘッダーを提供する必要があると書かれていました:
PHP コード1 2 3 4 5 6 7 8 9 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
-->
header( "Content-type: application/octet-stream" );
header( "Accept-Length: 2048" );
header( "Content-Disposition: attachment; filename=abc.txt" );
|
ログイン後にコピー
その内、 「Content-type」と「Content-Disposition」の 2 つのメッセージ ヘッダー、まだ理解できないので、それぞれ 2 つの例を作成しました。
a.php:
PHP コード1 2 3 4 5 6 7 8 9 10 11 12 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
-->
<?php
header( "Content-type: application/octet-stream" );
header( "Accept-Length: 2048" );
echo 123;
|
ログイン後にコピー
b.php:
PHP コード1 2 3 4 5 6 7 8 9 10 11 12 | <!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http:
-->
<?php
header( "Accept-Length: 2048" );
header( "Content-Disposition: attachment; filename=abc.txt" );
echo 123;
|
ログイン後にコピー
私の質問は次のとおりです:
1. 両方のページにメッセージが 1 つありません。 、それでもファイルを正常にダウンロードできるのはなぜですか?
2. ファイルサイズは 2048 バイトですが、実際の出力は「123」の 3 バイトだけですが、なぜ正常にダウンロードできますか?
「Accept-Length」メッセージ ヘッダーはオプションですか?
http を学んだばかりです。理解できないので、より深い概念を導入しないで、質問に答えてください。 。
ありがとうございます! :)
-----解決策---------
1. どちらのページにもメッセージ ヘッダーがありませんが、それでもファイルを正常にダウンロードできるのはなぜですか?
Content-Length を設定していないため、接続終了時のデフォルトの出力はダウンロードされたコンテンツです。
2. 指定したファイルサイズは 2048 バイトですが、実際の出力は "123" 3 バイトしか正常にダウンロードできません。 「Accept-Length」メッセージヘッダーはオプションですか?
Accept-Length は、許容される文字列の最大長を意味します。したがって、設定してもしなくても構いません。