Будет ли получено правило № 2, если правило № 1 будет первым? Или остановится на правиле № 1 для модуля перезаписи URL IIS.
Насколько я знаю, оба исходящих правила попадут. Сначала он запустит «Установить заголовок Access-Control-Allow-Origin», затем «Включить CORS для шрифтов». Вы можете написать простое правило и использовать почтальон для его проверки.
Правило, как показано ниже:
Это правило изменяет переменные Access-Control-Allow-Origin и Server.
<outboundRules>
<rule name="removingserverheader" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_SERVER" pattern=".*" />
<action type="Rewrite" value="0" />
</rule>
<rule name="Enable CORS for Fonts">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions>
<add input="{HTTP_ORIGIN}" pattern=".*" />
</conditions>
<action type="Rewrite" value="2" />
</rule>
</outboundRules>
Результат:
Если вы просто хотите, чтобы сработало только одно правило, не нажимайте другое правило. Я предлагаю вам попробовать использовать флаг StopProcessing.
Это означает, что когда действие правила выполняется (т. Е. Правило соответствует) и этот флаг включен, это означает, что никакие последующие правила не будут обрабатываться и запрос будет передан в конвейер запросов IIS. По умолчанию этот флаг отключен.
Правило, как показано ниже:
<rewrite>
<outboundRules>
<rule name="removingserverheader" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_SERVER" pattern=".*" />
<action type="Rewrite" value="0" />
</rule>
<rule name="Enable CORS for Fonts" enabled="true">
<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
<conditions>
<add input="{HTTP_ORIGIN}" pattern=".*" />
</conditions>
<action type="Rewrite" value="2" />
</rule>
</outboundRules>
</rewrite>
Результат: