来自缓存的请求没有CORS头

时间:2018-04-04 05:03:06

标签: azure cors azure-api-management

使用缓存和CORS配置操作后,仅当响应来自缓存未命中时,命中端点才会返回所需的CORS头。 从缓存中获取响应时,标题丢失。

操作的配置是:

<policies>
    <inbound>
        <base />
        <cache-lookup vary-by-developer="false" vary-by-developer-groups="false">
            <vary-by-header>Accept</vary-by-header>
            <vary-by-header>Accept-Charset</vary-by-header>
        </cache-lookup>
        <cors allow-credentials="true">
            <allowed-origins>
                <origin>http://example.com</origin>
            </allowed-origins>
            <allowed-methods>
                <!-- allow any -->
                <method>*</method>
            </allowed-methods>
            <allowed-headers>
                <!-- allow any -->
                <header>*</header>
            </allowed-headers>
        </cors>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <cache-store duration="300" />
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

1 个答案:

答案 0 :(得分:2)

政策中节点的顺序很重要。在cache-lookup元素之前使用cors元素会导致从缓存中获取响应,然后立即返回,而不会通过cors指令添加标头。 解决方案是颠倒两个元素的顺序,使cors出现在cache-lookup之前,这意味着它始终被调用并将相关的标题添加到响应中,无论它是来自缓存还是不