首页 > 解决方案 > 如何通过授权在 IIS 重写中添加 cors 设置?

问题描述

我想在 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 不允许请求标头字段授权。

标签: .netiisurl-rewriting

解决方案


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


推荐阅读