Что означает HTTP-заголовок Vary: * - PullRequest
8 голосов
/ 29 сентября 2011

Насколько я знаю, заголовок HTTP Vary указывает разделенный запятыми список заголовков HTTP, которые должны учитываться кэшем вместе с URL-адресом при принятии решения о том, является ли запрос попаданием в кэш или пропуском.

Если этот заголовок пропущен, означает, что будет рассматриваться только URL.

Но что произойдет, если заголовок будет Vary:*?

RFC 2616 14,4

Значение Vary поля *** сигнализирует, что неопределенные параметры не ограничено заголовками запроса (например, сетевым адресом клиент), играют роль в выборе представления ответа. Значение * НЕ ДОЛЖНО генерироваться прокси-сервером; это может быть только генерируется сервером происхождения.

RFC 2616 13,6

Значение поля заголовка Vary * всегда не соответствует и последующим запросы на этот ресурс могут правильно интерпретироваться только исходный сервер.

Значит ли это, что все запросы с этим заголовком будут пропущены?

Я обнаружил, что ASP.NET возвращает этот HTTP-заголовок, если вы используете их OutputCacheAttribute, и вам нужно явно отключить это поведение, если вы не хотите заголовок, или вы хотите указать пользовательские заголовки, поэтому я (хочу) поверить, что это маловероятно.

Каково практическое значение Vary:*?

Спасибо.

1 Ответ

4 голосов
/ 01 октября 2011

Vary: * сообщает кешам, что ответ был выбран на основе аспектов, выходящих за рамки обычных аспектов согласования содержимого HTTP (например, Accept, Accept-Language, Accept-Charset).

Фактически это говорит о том, что кэш некэшировать ответ.Это означает, что «последующие запросы к этому ресурсу могут правильно интерпретироваться только исходным сервером».Кеш должен пересылать эти запросы на сервер происхождения.

Редактировать: Варьируется ортогонально кешированию.Учтите это:

GET / foo HTTP / 1.1

200 Ok Cache-Control: maxage = 60 Content-Location: /foo.html Варьируется: *

Варьируется: *сообщает кешам, что ответ не может быть кеширован для запросов к / foo.Но из-за заголовка Content-Location кеши могут сохранять ответы на запросы в /foo.html.

...