首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URL重写模块的outboundRules优先级

URL重写模块的outboundRules优先级
EN

Stack Overflow用户
提问于 2019-01-10 21:58:50
回答 1查看 577关注 0票数 0

如果第一条规则第一条被击中,第二条规则会被击中吗?还是会在IIS重写模块的规则#1处停止。我试图跳过具有特定来源的网页字体。

代码语言:javascript
复制
<outboundRules>
        <rule name="Set Access-Control-Allow-Origin header">
          <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
            <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?(thestatbook\.com|localhost:3000)))" />
          </conditions>
          <action type="Rewrite" value="{C:0}" />
        </rule>
    <rule name="Enable CORS for Fonts">
          <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
          <conditions>
            <add input="{REQUEST_URI}" pattern="^[^\?]+\.(ttf|otf|eot|woff|woff2|svg)(\?.*)?$" />
          </conditions>
          <action type="Rewrite" value="*" />
        </rule>
      </outboundRules>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-11 06:33:47

如果第一条规则第一条被击中,第二条规则会被击中吗?还是会在IIS重写模块的规则#1处停止。

据我所知,两个outboundRules都会命中。它将首先运行“设置访问-控制-允许-源标题”,然后“启用字体的CORS”。您可以编写一个简单的规则,并使用邮递员来测试它。

规则如下:

此规则将修改访问控制-允许-原产地和服务器变量.

代码语言:javascript
复制
        <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请求管道。默认情况下,此标志将被关闭。

规则如下:

代码语言:javascript
复制
      <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>

结果:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54137519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档