Почему NGinx отправляет контент в ответе HTTP 304, если If-None-Match / If-Modified-Since соответствует?

Моя установка NGinx по умолчанию возвращает ответ 304 Not Modified на запрос с совпадающим заголовком If-None-Match и заголовком с неограниченным сроком действия If-Modified-Since что является правильным поведением, но NGinx также добавляет содержимое ресурса в ответ 304. Можно было бы подумать, что NGinx не будет добавлять контент, а просто вернет 304 с пустым телом, указывая браузеру, что использование их кэшированного ресурса достаточно.

Есть ли причина для такого поведения и как его отключить?

0
задан 28 July 2016 в 21:20
1 ответ

Вы уверены, что NGINX возвращает контент?

В зависимости от того, как вы просматриваете ответ, это может быть только так.

Например, когда Chrome dev tools получает 304 от NGINX, он отображает контент, который выглядит так, как будто он был отправлен из NGINX, но на самом деле он просто извлекается из кеша Chrome.

Вы можете попробовать это, щелкнув правой кнопкой мыши файл -> «Копировать -> Скопировать как cURL» в инструментах разработчика Chrome.

Добавьте -vv в начало того, что вы только что скопировали (например, curl -vv -H 'HeaderKey: HeaderValue ' ), затем выполните в терминале / оболочке.

Вы, вероятно, увидите, что он не возвращает содержимое тела (даже если это 304.) Затем вы можете попробовать тот же запрос только с URL-адресом ( curl -vv ), и вы увидите тело без 304.

3
ответ дан 4 December 2019 в 12:22

Теги

Похожие вопросы