1

場合によっては、私の PHP スクリプトが大きなバイナリ ファイルを提供しています。if-modified-sinceヘッダーをサポートしたい。

テスト中に予期しない動作が観察されました。PHP でlast-modified応答ヘッダーを設定すると、Apache はif-modified-sinceヘッダーを使用してリクエストを自動的に処理するようです ('200 OK' + コンテンツまたはコンテンツなしの '304 Not Modified')。の「200 OK」を覆すことさえありheader("Last-Modified: $lastModifiedValue GMT", true, 200);ます。

この動作に依存するかどうか、またはif(isset($headers['If-Modified-Since'])){...}ブロックを実装する必要があるかどうかを判断する前に、この動作に関するドキュメントを見つけようとしました。

この振る舞いがどれほど公式なものであるかについての経験、アドバイス、またはヒントは大歓迎です。

完全なテスト スニペット:

$lastModifiedValue = gmdate('D, d M Y H:i:s', filemtime($path));

header('Content-Type: application/octet-stream');
header("Last-Modified: $lastModifiedValue GMT", true, 200);
header('Content-Length: ' . filesize($path));
header('Content-Disposition: attachment; filename="binary-data.bin"');

ob_end_clean();
$fileHandle = fopen($path, "rb");
fpassthru($fileHandle);
fclose($fileHandle);
exit;

(サーバーは Apache: 2.2、PHP: 5.6 で動作します)

4

0 に答える 0