啟用JS縮制和套件組合時,簽出會失敗
本文提供Adobe Commerce問題的修補程式,在啟用縮制、套件組合及(在某些情況下)合併JavaScript (JS)資產時,此問題會讓簽出功能無法正常運作。
說明 description
環境
Adobe Commerce,所有部署方法。
問題/症狀
在啟用縮制、套件組合,以及(在某些情況下)合併JS資產時,內容安全性原則(CSP)功能最近的變更已導致簽出功能失敗。 此問題可能會完全阻礙店面上的訂單下達。
受影響的產品和版本
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版上的雲端執行個體可能會錯誤產生只包含JS資產一小部分的SRI雜湊的
sri-hashes.json檔案。
3d58f420-19b5-47a0-a122-5c9dab55ec7f