【问题标题】:How to add cors settings in IIS rewrite with authorization?如何通过授权在 IIS 重写中添加 cors 设置?
【发布时间】:2021-10-22 22:06:36
【问题描述】:

我想在 IIS 中创建一个重写规则。我想向 mydomain.com 发送请求,但要使用授权。

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

这是有效的。但是当我使用 javascript ajax 发送请求时,它会抛出异常。 (我的 javascript 应用程序在 'http://127.0.0.1:1265' 上运行)

来自原点“http://127.0.0.1:1265”已被 CORS 策略阻止: 请求头域授权是不允许的 预检响应中的 Access-Control-Allow-Headers。

【问题讨论】:

标签: .net iis url-rewriting


【解决方案1】:

您的第一条规则匹配的请求太多,因此您必须对其进行修改以至少排除所有 CORS 预检请求,因为根据标准,这些预检请求必须是匿名的并且没有授权标头(如错误消息所示)。

【讨论】:

  • 但 example.com 需要基本授权。我怎样才能改变它?
  • @barteloma 要削弱规则并排除某些请求,请添加 condition 标签。
猜你喜欢
  • 2021-06-26
  • 2013-04-09
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 2020-12-22
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多