Явная обработка if-Modified-Since в сценарии PHP необязательна для Apache? - PullRequest
1 голос
/ 07 января 2020

В некоторых случаях мой PHP скрипт предоставляет большой двоичный файл. Я хочу поддержать заголовок if-updated-Since .

Во время моих тестов я обнаружил неожиданное поведение: если я установил заголовок ответа last-updated в PHP затем Apache, кажется, обрабатывает запросы с заголовком if-Modified-начиная с автоматически («200 OK» + содержимое или «304 Не изменено» без содержимого). Он даже отменяет '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)

...