簡體   English   中英

當托管在Azure應用程序服務中時,如何控制添加到ASP.NET核心Web應用程序中的HTTP響應標頭?

[英]How can I control the HTTP response headers added to my ASP.NET core web application when hosted in Azure app service?

我們已經編寫了一個ASP.NET core 2.2 Web應用程序,該應用程序基本上公開了一些Web 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附加值?
  • 是否可以自定義Azure主機添加的HTTP標頭(如果有)?
  • 是價值Accept-Encoding, Accept-Charset,Accept-Encoding為有效的值Vary頭? 即使我們將值重復兩次也能按預期工作嗎?

托管在Azure應用程序服務(在Windows之一)ASP .NET的核心仍然使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM