Удалить заголовок сервера при ответе 500 Ошибка HTTP - PullRequest
0 голосов
/ 03 мая 2018

У меня есть служба API REST, развернутая как служба приложений Azure, и я пытаюсь удалить заголовок сервера из ответа.

Я попытался добавить пользовательское исходящее правило в модуль перезаписи.

В web.config у меня есть

<rewrite>       
 <outboundRules>      
  <rule name="Change Server Header">        
  <match serverVariable="RESPONSE_Server" pattern=".+" />          
<action type="Rewrite" value="My Server" />        
  </rule>      
 </outboundRules> 
</rewrite>  

Я также применил преобразование applicationHost.xdt к applicationHost.config, чтобы добавить переменную RESPONSE_Server

<?xml version="1.0"?>  
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
  <configSections> 
    <sectionGroup name="system.webServer" xdt:Locator="Match(name)"> 
      <sectionGroup name="rewrite" xdt:Locator="Match(name)"> 
        <section name="allowedServerVariables" overrideModeDefault="Allow" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(overrideModeDefault)" />
      </sectionGroup> 
    </sectionGroup> 
  </configSections>
    <system.webServer> 
        <rewrite> 
            <allowedServerVariables> 
            <add name="RESPONSE_Server" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" /> 
          </allowedServerVariables> 
        </rewrite>  
    </system.webServer>  
</configuration>

Но я все еще вижу HTTP-заголовок ответа сервера на запрос, подобный следующему, который возвращает код состояния HTTP 500

https://api.internaltest.com/%3a/

Правило перезаписи работает в локальном IIS, оно успешно удаляет заголовок http ... но не при выполнении этого в службе приложений Azure.

Пожалуйста, скажите мне, что мне не хватает.

Я упоминаю, что у меня также есть removeServerHeader = "true" в web.config, но он удаляет заголовок сервера только при 404 неправильных запросах, а не при 500 кодах состояния.

<security>
      <requestFiltering removeServerHeader="true">
        <requestLimits maxAllowedContentLength="2147483647" />
      </requestFiltering>
    </security>

Надеюсь, кто-нибудь может мне помочь,

Спасибо

1 Ответ

0 голосов
/ 03 мая 2018

Мне удалось заставить его работать, добавив правило для исходящих сообщений в файле xdt, а не в web.config

Вот правильное приложение. Host.xdt надеюсь, что это поможет другим ... Он заменяет заголовок сервера значением 500 error HTTP response

<?xml version="1.0"?>  
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
  <configSections> 
    <sectionGroup name="system.webServer" xdt:Locator="Match(name)"> 
      <sectionGroup name="rewrite" xdt:Locator="Match(name)"> 
        <section name="allowedServerVariables" overrideModeDefault="Allow" xdt:Locator="Match(name)" xdt:Transform="SetAttributes(overrideModeDefault)" />
      </sectionGroup> 
    </sectionGroup> 
  </configSections>
    <system.webServer> 
        <rewrite> 
            <allowedServerVariables> 
            <add name="RESPONSE_Server" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)" /> 
          </allowedServerVariables> 
          <outboundRules xdt:Transform="InsertIfMissing">
                <rule name="Change Server Header" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)">
                    <match serverVariable="RESPONSE_Server" pattern=".+" />
                    <action type="Rewrite" value="My Server" />
                </rule>
            </outboundRules> 
        </rewrite>  
    </system.webServer>  
</configuration>
...