如何将 access-control-allow-origin 标头从 Web 应用程序转发到 Front Door?

问题描述 投票:0回答:3

我目前有一个在容器中运行的 Web 应用程序,并在其上正确配置了 access-control-allow-origin 标头。但是,当我检查此 Web 应用程序前面的前门时,相同的标头具有选项“*”——接受所有类型的请求,与配置的请求不同。

如何让前门传播此 Web 应用程序标头?

azure azure-web-app-service azure-front-door
3个回答
4
投票

这里是关于此的官方文档:Azure Front Door Rule Set

在 Azure Front Door 上,您可以在 Azure Front Door 中创建规则 设置规则以检查请求中的 Origin 标头。如果它是有效的 origin,您的规则将设置 Access-Control-Allow-Origin 标头 正确的值。在这种情况下,访问控制允许来源 来自文件源服务器的标头被忽略,并且 AFD 的规则 引擎完全管理允许的 CORS 来源。 enter image description here


2
投票

Doris lv之前的回答是正确的,但我还想指出一些事情:

  • 小心不要在 URL 末尾添加斜杠 (/) -- 我添加了斜杠,这就是为什么不起作用:

enter image description here

  • 创建规则后,转到前门设计器 (FDD) 并将此新规则与一些可用的路由规则链接起来

enter image description here

  • 同样在 FDD 中,单击 Purge 按钮清除以前的缓存并加载新配置

enter image description here

另一件重要的事情是,我必须执行此配置,因为 HDCL AppScanAccess-Control-Allow-Origin 标头过于宽松;话虽这么说,扫描指出 Java 脚本文件有这个问题,但它们没有,只有 CSS 和 TFF 文件有这个标头。仔细查看扫描报告会发现,发生的情况是 Vary 标头中包含值 Origin,这使得扫描报告存在跨源资源共享 (CORS) 问题。要解决此问题,只需在规则引擎配置中添加一条新规则,删除此标头,如下所示:

enter image description here

在此之后,扫描没有报告任何更多问题


0
投票

由于规则引擎中每个规则集的规则数量限制,其他答案对于将最多 25 个域列入白名单有效,无论是在 Azure Front Door classic 还是Standard/Premium 上。您不能使用多个规则集来扩展限制,甚至不能以额外的路由规则转发到同一后端池/源为代价,因为每个路由规则只能使用一个规则集,并且单个域不能被多个路由规则使用。匹配相同路径的路由规则。

那么,唯一的选择是:

  1. 为每组 25 个调用者使用不同的前端域(疯狂且昂贵),
  2. 使用
    Access-Control-Allow-Origin: *
    (并不总是一个选项)完全打开 CORS 并清除 Front Door 缓存,
  3. 禁用需要 CORS 的路径的缓存,或者
  4. 停止使用前门服务并寻找其他地方。
© www.soinside.com 2019 - 2024. All rights reserved.