如何为 CORS 设置 IIS 重写规则?

Posted

技术标签:

【中文标题】如何为 CORS 设置 IIS 重写规则?【英文标题】:How to set IIS rewrite rule for CORS? 【发布时间】:2021-06-26 13:48:30 【问题描述】:

我为服务器 url 创建了一个 IIS 重写角色。

当我向[https://mysite/back/api/....][1]发送请求时,它会从https://remotesite/back/api/....获取数据

所以我的 IIS 重写配置如下。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="api">
                    <match url="^api/(.*)" />
                    <action type="Rewrite" url="`https://remotesite/back/api/R:1`" />
                </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>           
          </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

[https://mydomain/back/api/][1] 有一个“推荐人政策:严格原产地时跨原产地”。所以我无法向我的域发送 javascript 请求。

如何更新配置?

【问题讨论】:

【参考方案1】:

您可以使用IIS CORS module 来解决这个问题。关于“IIS CORS模块配置参考”的信息,可以参考这个link。

【讨论】:

以上是关于如何为 CORS 设置 IIS 重写规则?的主要内容,如果未能解决你的问题,请参考以下文章

IIS 重写规则不传递参数

CORS 使用带有 ARR 和 URL 重写的 IIS 作为反向代理

IIS通过http方法重写排除规则

无法使用 URL 重写出站规则更改 IIS 响应代码

IIS-URL重写参数

thinkphp在iis下如何写规则url重写