代码之家  ›  专栏  ›  技术社区  ›  Brad Parks

如何确保我的CDN按来源缓存CORS请求?

  •  2
  • Brad Parks  · 技术社区  · 6 年前

    我目前将Akamai用作我的应用程序的CDN,该应用程序通过多个子域提供服务。

    我最近意识到,Akamai正在缓存相同的CORS请求,而不管这些请求来自何处。

    这当然会导致客户端使用不同的 Origin 缓存的响应失败(因为它们的响应头不同 Access-Control-Allow-Origin 比他们应该做的更多)

    许多人建议提供 Vary: Origin 请求标头以避免此问题,但 according to Akamai's docs this Akamai community post ,这不受Akamai支持。

    如何强制Akamai通过 起源 如果 起源 请求中是否存在标头?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Brad Parks    6 年前

    我做了一些研究,似乎可以通过添加新的 Rule 在Akamai配置中,如下所示:

    请注意,如果您这样做,请记住,这会更改您在Akamai的缓存密钥,因此以前缓存的任何内容基本上不再缓存!此外,如黄色警告标签中所述,这会使使用Akamai的url清除工具强制重置缓存变得更加困难。您可以删除 If 阻止,只包括 Origin 标题类似 Cache ID Modification 如果您同意更改此规则将应用于的所有内容的缓存键,则也可以使用此规则。

    因此,简而言之,请先在您的站点的一小部分尝试一下!

    可以找到更多详细信息 in this related post on Stack Overflow

    enter image description here

        2
  •  1
  •   Yash    4 年前

    我们在Akamai上托管了一个API。我有类似的要求,但我们希望对所有接触点使用Akamai上的缓存响应。但在没有CORS设置的情况下,它用于缓存来自第一个原点的响应,然后将其保留在缓存中,并且来自其他接触点的以下请求由于缓存的原点标头而失败。

    我们使用Akamai提供的API网关功能解决了该问题。您可以在API定义下找到它。也可以在此处定义自定义缓存参数。请查看CORS设置的屏幕截图。现在,它缓存来自后端的响应,并根据允许的源列表向请求者提供服务。

    CORS Setting in API Definition

    推荐文章