Azure API管理CORS问题

c90pui9n  于 2022-11-25  发布在  其他
关注(0)|答案(2)|浏览(186)

我遇到了一个奇怪的Azure API管理问题,该问题出现在应用服务中运行的ASP.NET核心Web API前面。
当我们通过API管理时,有几个端点(PUT和PATCH)出现CORS错误,但我没有在API管理中执行任何有关CORS的操作,所有这些都由ASP.NET核心应用程序处理。
我已验证绕过API管理服务并使前端直接与应用程序服务通信不会发生此问题。
API管理中的策略

<policies>
    <inbound>
        <base />
        <set-backend-service id="apim-generated-policy" backend-id="xxxxxxx" />
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

任何帮助都将不胜感激。

olhwl3o2

olhwl3o21#

也许可以尝试在入站流中添加cors策略,以允许您的前端端点,如下图所示:

<cors allow-credentials="true">
      <allowed-origins>
        <origin>http://frontend.com</origin>
      </allowed-origins>
      <allowed-methods>
        <method>PUT</method>
        <method>PATCH</method>
      </allowed-methods>
      <allowed-headers>
        <header>content-type</header>
        <header>accept</header>
      </allowed-headers>
    </cors>
gr8qqesn

gr8qqesn2#

尝试允许所有<allowed-headers><expose-headers>标头。完整的策略XML如下所示。

<policies>
    <inbound>
        <base />
        <cors allow-credentials="false">
            <allowed-origins>
                <origin>*</origin>
            </allowed-origins>
            <allowed-methods preflight-result-max-age="30">
                <method>*</method>
            </allowed-methods>
            <allowed-headers>
                <header>*</header>
            </allowed-headers>
            <expose-headers>
                <header>*</header>
            </expose-headers>
        </cors>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

相关问题