Моя установка NGinx по умолчанию возвращает ответ 304 Not Modified на запрос, который соответствует If-None-Match
заголовок и непросроченный If-Modified-Since
заголовок, что является правильным поведением, но NGinx также добавляет содержимое ресурса в ответ 304. Можно было бы подумать, что NGinx не будет добавлять контент, а просто вернет 304 с пустым телом, указывая браузеру, что использования их кэшированного ресурса достаточно.
Есть ли причина такого поведения и как его отключить?
Вы уверены, что NGINX возвращает контент?
В зависимости от того, как вы смотрите на ответ, это может только казаться так.
Например, когда инструменты разработчика Chrome получают 304 от NGINX, он отображает контент, который выглядит как будто он был отправлен из NGINX, но на самом деле он просто извлекается из кеша Chrome.
Вы можете попробовать это, щелкнув правой кнопкой мыши файл -> «Копировать -> Копировать как cURL» в инструментах разработчика Chrome.
Добавьте -vv в начало того, что вы только что скопировали (например, curl -vv <your-url> -H 'HeaderKey: HeaderValue' <etc>
), затем выполните в терминале / оболочке.
Вы, вероятно, увидите, что он не возвращает содержимое тела (даже если это 304.) Затем вы можете попробовать тот же запрос только с URL-адресом (curl -vv <your-url>
) и увидите тело без 304.