【问题标题】:Azure API Management Services updating CORS to allow OPTIONSAzure API 管理服务更新 CORS 以允许 OPTIONS
【发布时间】:2021-07-05 11:29:09
【问题描述】:

我已经在 apim 中设置了一个 POST 端点,我可以测试它在绕过 apim 时是否正常工作 - 但是当我从我的站点调用它时,我得到一个 200 空响应以及 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://apim.azure-api.net/project. (Reason: CORS header “Access-Control-Allow-Origin” missing)

我相信这是因为“当 OPTIONS 请求作为飞行前请求处理并且与 CORS 策略设置不匹配时:立即以空的 200 OK 响应终止请求” - 基于此处的文档:@987654321 @ 属性 terminate-unmatched-request 默认为 true - 当我尝试在策略中将其设置为 false 时,它不会被保存,例如:

<policies>
    <inbound>
        <base />
        <cors terminate-unmatched-request="false">
            <allowed-origins>
                <origin>*</origin>
            </allowed-origins>
            <allowed-methods>
                <method>OPTIONS</method>
                <method>POST</method>
            </allowed-methods>
            <allowed-headers>
                <header>*</header>
            </allowed-headers>
        </cors>
    </inbound>
    ...

结果:

<policies>
    <inbound>
        <base />
        <cors>
            <allowed-origins>
                <origin>*</origin>
            </allowed-origins>
            <allowed-methods>
                <method>OPTIONS</method>
                <method>POST</method>
            </allowed-methods>
            <allowed-headers>
                <header>*</header>
            </allowed-headers>
        </cors>
    </inbound>
    ...

所以我想知道是否需要将其设置在其他地方,或者我是否需要以不同的方式更新我的策略以允许 OPTIONS 预检请求?

【问题讨论】:

  • 非保存属性必须是需要修复的 UI 错误。但这不是你问题的根源。如果预检请求仅控制是否尝试另一个 cors 策略,则终止不匹配的请求。但是,如果它们都没有真正匹配对预检请求的响应,则仍然不会包含必要的标头。我的建议是尝试检查预检请求,看看究竟是什么阻止了 cors 策略生成必要的标头作为响应。
  • 为此,请在 Azure 门户中打开测试控制台并在其中查看请求。将其复制到可以发出 OPTIONS 请求的工具 - Fiddler 工作正常,将方法更改为 OPTIONS,添加 Access-Control-Request-Method 和 Origin 标头并查看检查器跟踪响应。
  • 我将我的 CORS 策略从特定的 Operation 移至 All operations 级别,这似乎有效。

标签: azure cors azure-api-management


【解决方案1】:

由于问题已在评论中解决,请将其添加为帮助他人的答案。

我将我的 CORS 策略从特定的 Operation 移至 All operations 级别,这似乎奏效了。

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2013-11-28
    • 2020-06-21
    • 2014-11-25
    • 2017-03-18
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多