Как управлять заголовками ответов HTTP, добавляемыми в основное веб-приложение ASP.NET при размещении в службе приложений Azure? - PullRequest
1 голос
/ 25 марта 2019

мы написали веб-приложение ASP.NET core 2.2, которое в основном предоставляет несколько контроллеров веб-API, и мы использовали ResponseCachingMiddleware для реализации кэша ответов на стороне сервера в нашем конвейере промежуточного программного обеспечения.

Мы следовали этому руководству Microsoft и решили добавить заголовок ответа HTTP Vary, чтобы каждый ответ нашего приложения содержал следующий заголовок: Vary: Accept-Encoding, Accept-Charset.

Это необходимо, как объяснено в руководстве, связанном выше, для того, чтобы кэш ответов мог обрабатывать заголовки клиентских запросов, чтобы кэшированные ответы использовались тогда и только тогда, когда они совместимы с клиентским запросом.

Тестирование с почтальоном. Я заметил, что при развертывании приложения в Azure (для этого мы использовали стандартную службу приложений Azure), заголовок ответа Vary не тот, который я ожидал: кажется, что сам Azure добавляет значение Accept-Encoding так, чтобы значение для заголовка Vary было установлено как Accept-Encoding, Accept-Charset,Accept-Encoding (это комбинация значения, установленного нашим приложением, и значения, которое, я полагаю, автоматически добавляется Azure).

Тем не менее, у меня есть пара вопросов:

  • является ли дополнительное значение Accept-Encoding действительно добавленным лазурным хостом?
  • Есть ли способ настроить заголовки HTTP, добавленные узлом Azure (если есть)?
  • является ли значение Accept-Encoding, Accept-Charset,Accept-Encoding допустимым значением для заголовка Vary? это будет работать, как ожидалось, даже если мы повторим значение дважды?

1 Ответ

2 голосов
/ 27 марта 2019

Хостинг ASP .NET Core в службе приложений Azure (Windows) по-прежнему использует IIS, как указано здесь . Поэтому вы должны иметь возможность контролировать свои заголовки, добавив web.config в ваш проект.

Вот пример того, как это будет выглядеть, и ссылка на документы,

<configuration>  
  <system.web>
    <httpRuntime enableVersionHeader="false" /> <!-- Removes ASP.NET version header. Not needed for Ghost running in iisnode -->
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering removeServerHeader="true" /> <!-- Removes Server header in IIS10 or later and also in Azure Web Apps -->
    </security>
    <httpProtocol>
      <customHeaders>
        <clear /> <!-- Gets rid of the other unwanted headers -->
        <add name="X-Frame-Options" value="SAMEORIGIN" />
      </customHeaders>
      <redirectHeaders>
        <clear />
      </redirectHeaders>
    </httpProtocol>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...