JS の縮小とバンドルが有効な場合、チェックアウトは失敗します
この記事では、Adobe Commerce(JS)アセットの縮小、バンドルおよび(場合によっては)結合が有効な場合に、チェックアウトが正しく機能しないJavaScript問題に対するパッチを提供します。
説明 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 ファイルの Subresource Integrity (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ファイルが誤って生成される場合があります。