7

PDF ファイルの一部をバイト範囲で提供する PHP スクリプトがあります。

HTTP HEAD リクエストを受信した場合、実際のファイルの内容ではなく、ヘッダー (PDF ファイルのサイズを含む) を返信する必要があります。私はこれを試しました:

header('HTTP/1.1 200 OK');
header('Content-Type: application/pdf');
header('Accept-Ranges: bytes');
header('Content-Length: '.filesize($Pathname));
die;

問題は、何か (Web サーバー == LiteSpeed だと思います) が Content-Length ヘッダーをContent-Length: 0- に置き換えて、目的全体を無効にすることです。

誰が私が何をすべきかを提案できますか? ありがとう

4

3 に答える 3

6

w3c Hypertext Transfer Protocol -- HTTP/1.1 から:

メッセージ本文が許可されているメッセージで Content-Length が指定されている場合、そのフィールド値はメッセージ本文の OCTET の数と正確に一致する必要があります。HTTP/1.1 ユーザー エージェントは、無効な長さを受信して​​検出した場合、ユーザーに通知する必要があります。

と:

Content-Length エンティティ ヘッダー フィールドは、受信者に送信されたエンティティ ボディのサイズを OCTET の 10 進数で示します。HEAD メソッドの場合は、送信されたエンティティ ボディのサイズが示されます。リクエストはGETでした。

したがって、実際の HEAD リクエストをサーバーに送信すると、コードは適切に機能すると思います。

于 2017-01-04T12:25:13.773 に答える