.net core UseResponseCompression конфликтует с атрибутом ResponseCache при вводе значений заголовка Vary

#.net #asp.net-mvc #.net-core #vary #responsecache

#.net #asp.net-mvc #.net-core #изменить #responsecache

Вопрос:

Я использую промежуточное программное обеспечение для сжатия ответов в своем приложении .Net Core API, вызывая app.UseResponseCompression(). Но в одном из моих действий контроллера API я также использую атрибут ResponseCache и устанавливаю для него значение VaryByHeader = Authorization, но в ответ, который я получаю, отображается только заголовок Vary: «Accept-Encoding», который, похоже, помещается туда промежуточным программным обеспечением для сжатия ответов. Если я удаляю промежуточное программное обеспечение, отображается Vary: Authorization, поэтому я предполагаю, что промежуточное программное обеспечение конфликтует с атрибутом ResponseCache.

Как я смогу получить авторизацию в заголовке vary, при этом все еще используя промежуточное программное обеспечение для сжатия ответов?

Ответ №1:

По-видимому, я должен указать как «Accept-Encoding», так и «Authorization» для значения VaryByHeader, чтобы получить их оба, при использовании атрибута ResponseCache с промежуточным программным обеспечением UseResponseCompression. Я не уверен, почему это так.

Я помещаю их в виде значений, разделенных запятыми, т.е. «Accept-Encoding, Authorization» для свойства VaryByHeader атрибута ResponseCache.

Ответ №2:

Я не понимаю, почему небезопасно использовать ResponseCache с авторизацией. Если кэш зависит от заголовка авторизации, утечек данных быть не должно.