Убедитесь, что ответы не кэшируются - PullRequest
1 голос
/ 03 августа 2011

У меня есть определенный HTTP-ответ, который я не хочу кэшировать, потому что он содержит личные / конфиденциальные данные

Я уже настраиваю Cache-Control на no-store , который должен обрабатывать клиенты, поддерживающие HTTP / 1.1.

Как использовать заголовок Expires , чтобы сделать то же самое для HTTP / 1.0? Должен ли я просто установить его с произвольной отметкой времени 1970 года или что-то? Есть ли специальное значение, чтобы оно никогда не кэшировалось?

1 Ответ

2 голосов
/ 03 августа 2011

HTTP RFC говорит:

Чтобы пометить ответ как «уже истекший», сервер отправления отправляет дату истечения срока, равную значению заголовка Date.

Вы должны установить заголовок expires на дату в прошлом. Также вы должны установить флаг must-revalidate в заголовке Cache-Control.

Истекает: Пт, 01 января 1990 00:00:00 GMT
Контроль кеша: без кеширования, необходимость повторной проверки

Хорошую статью о проблемах кэширования можно найти в doctype wiki :

Установка заголовка Expires в прошлом гарантирует, что HTTP / 1.0 и Прокси-серверы HTTP / 1.1 и браузеры не будут кэшировать содержимое. Директива Cache-control также указывает HTTP / 1.1 прокси не кэшировать содержание. Даже если прокси могут быть настроены на возврат устаревшего контента когда они не должны, повторное подтверждение должно подтвердить, что они ДОЛЖНЫ НЕ делай этого.

...