启用JS缩小和捆绑功能后,签出失败
本文为Adobe Commerce问题提供了一个修补程序,在启用了缩小、捆绑和(在某些情况下)合并JavaScript (JS)资源后,该修补程序会阻止签出正常运行。
描述 description
环境
Adobe Commerce,所有部署方法。
问题/症状
最近对内容安全策略(CSP)功能所做的更改导致在启用缩制、捆绑以及在某些情况下合并JS资源时签出功能失败。 此问题可能会完全阻止店面上的订单下达。
受影响的产品和版本
Magento Open Source和Adobe Commerce(所有部署方法):
- 2.4.4-p16
- 2.4.5-p15
- 2.4.6-p13
- 2.4.7-p8
- 2.4.8-p3
重现步骤:
-
确保CSP模块已启用。
-
切换到生产模式,并启用对JS资源的缩小和捆绑。
-
部署静态内容和刷新缓存。
-
导航到店面并尝试下订单。
-
在结账流程的每个步骤中,在浏览器控制台中检查是否存在JS错误。
- 如果存在错误或签出明确失败,存储将受到影响。
- 如果没有错误,并且订单安排是可能的,请验证
mixins.min.js结帐页面上是否存在。 如果mixins.min.js缺失,但签出可正常工作 — 此问题存在,但不会明显影响存储。
原因
对CSP功能所做的更改会在启用捆绑功能时,由于文件路径不正确,导致为缩小的JS文件不正确生成子资源完整性(SRI)哈希。
这反过来又导致mixins.min.js和static.min.js无法在 结帐 页面上正确呈现,从而导致在订购过程中出现各种故障。
解决方法 resolution
在任何受影响的版本上运行的存储区都应应用相应的修补程序来解决问题。
- 版本2.4.4-p16的
- 版本2.4.5-p15的
- 对于版本2.4.6-p13和2.4.7-p8
- 版本2.4.8-p3的
这些修补程序可反转上述与CSP相关的更改,并将CSP功能恢复到这些更改之前的状态。
注意: 应用这些修补程序会重新引入一些以前已知与SRI功能相关的问题:
- 在2.4.7-p8及更低版本上,将再次缓存SRI哈希,而不是存储在
sri-hashes.json中。 - 在2.4.8-p3及更低版本上,捆绑的/合并的JS资产将不会进行完整性哈希验证。
- 版本2.4.8-p3上的云实例可能错误地生成了仅包含SRI哈希的
sri-hashes.json文件(针对少部分JS资产)。
3d58f420-19b5-47a0-a122-5c9dab55ec7f