You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在带授权的IIS Rewrite规则中配置CORS设置

IIS重写规则CORS authorization头报错修复方案

问题根因

该报错由CORS预检(OPTIONS)请求校验触发:你当前的配置仅调整了跨域源允许规则,没有在预检响应的Access-Control-Allow-Headers列表中显式允许authorization请求头,不符合浏览器CORS安全校验要求,因此请求被拦截。

修改步骤

  • 首先进入IIS对应站点的「URL重写」功能,点击右侧「查看服务器变量」,新增2个允许修改的服务器变量:
    • RESPONSE_Access_Control_Allow_Headers
    • RESPONSE_Access_Control_Allow_Methods
  • 替换站点根目录下的web.config配置,完整可运行配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <!-- 新增OPTIONS预检请求处理规则,直接返回204,无需转发到后端 -->
                <rule name="HandleOptionsPreflight" stopProcessing="true">
                    <match url=".*" />
                    <conditions>
                        <add input="{REQUEST_METHOD}" pattern="^OPTIONS$" />
                    </conditions>
                    <action type="CustomResponse" statusCode="204" statusDescription="No Content" />
                </rule>
                <!-- 原有API重写规则 -->
                <rule name="api">
                    <match url="^api/(.*)" />
                    <action type="Rewrite" url="https://mydomain.com/api/{R:1}" />
                    <serverVariables>
                        <set name="HTTP_Authorization" value="Basic c13546tYW4uaASWJh79864L=" />
                    </serverVariables>
                </rule>
            </rules>
          <outboundRules>
              <clear />                
              <!-- 原有跨域源允许规则 -->
              <rule name="api">
                  <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
                  <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                      <add input="{HTTP_ORIGIN}" pattern="(.*)" />
                  </conditions>
                  <action type="Rewrite" value="{C:0}" />
              </rule>
              <!-- 新增允许authorization等请求头的规则 -->
              <rule name="AllowCORSHeaders">
                  <match serverVariable="RESPONSE_Access_Control_Allow_Headers" pattern=".*" />
                  <action type="Rewrite" value="authorization,content-type" />
              </rule>
              <!-- 新增允许常用请求方法的规则 -->
              <rule name="AllowCORSMethods">
                  <match serverVariable="RESPONSE_Access_Control_Allow_Methods" pattern=".*" />
                  <action type="Rewrite" value="GET,POST,PUT,DELETE,OPTIONS" />
              </rule>
          </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

注意:如果有其他自定义请求头需要允许,直接在Access-Control-Allow-Headers的value中添加,多个值用英文逗号分隔即可。


内容的提问来源于stack exchange,提问作者barteloma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:45:05