我目前有一个在容器中运行的 Web 应用程序,并在其上正确配置了 access-control-allow-origin 标头。但是,当我检查此 Web 应用程序前面的前门时,相同的标头具有选项“*”——接受所有类型的请求,与配置的请求不同。
如何让前门传播此 Web 应用程序标头?
这里是关于此的官方文档:Azure Front Door Rule Set
在 Azure Front Door 上,您可以在 Azure Front Door 中创建规则 设置规则以检查请求中的 Origin 标头。如果它是有效的 origin,您的规则将设置 Access-Control-Allow-Origin 标头 正确的值。在这种情况下,访问控制允许来源 来自文件源服务器的标头被忽略,并且 AFD 的规则 引擎完全管理允许的 CORS 来源。
Doris lv之前的回答是正确的,但我还想指出一些事情:
另一件重要的事情是,我必须执行此配置,因为 HDCL AppScan 说 Access-Control-Allow-Origin 标头过于宽松;话虽这么说,扫描指出 Java 脚本文件有这个问题,但它们没有,只有 CSS 和 TFF 文件有这个标头。仔细查看扫描报告会发现,发生的情况是 Vary 标头中包含值 Origin,这使得扫描报告存在跨源资源共享 (CORS) 问题。要解决此问题,只需在规则引擎配置中添加一条新规则,删除此标头,如下所示:
在此之后,扫描没有报告任何更多问题
由于规则引擎中每个规则集的规则数量限制,其他答案对于将最多 25 个域列入白名单有效,无论是在 Azure Front Door classic 还是Standard/Premium 上。您不能使用多个规则集来扩展限制,甚至不能以额外的路由规则转发到同一后端池/源为代价,因为每个路由规则只能使用一个规则集,并且单个域不能被多个路由规则使用。匹配相同路径的路由规则。
那么,唯一的选择是:
Access-Control-Allow-Origin: *
(并不总是一个选项)完全打开 CORS 并清除 Front Door 缓存,