JSの縮小とバンドルが有効になっている場合、チェックアウトが失敗する
この記事では、JavaScript(JS)アセットの縮小、バンドルおよび(場合によっては)結合が有効になっている場合に、チェックアウトが正しく機能しないAdobe Commerceの問題に対するパッチを提供します。
説明 description
環境
Adobe Commerce、すべてのデプロイメント方法。
問題/症状
コンテンツセキュリティポリシー(CSP)機能に対する最近の変更により、縮小、バンドル、場合によってはJS アセットの結合が有効になっていると、チェックアウト機能が失敗する原因になりました。 この問題により、ストアフロントでの注文が完全にブロックされる可能性があります。
影響を受ける製品とバージョン
この問題は、以前のパッチバージョンで導入されたもので、同じマイナーバージョンのその後のパッチリリースでは未解決のままです。
影響を受けるバージョンには、次のものが含まれます(ただし、限定されません):
- 2.4.8-p3
- 2.4.8-p4
- 2.4.7-p8
- 2.4.7-p9
- 2.4.6-p13
- 2.4.6-p14
- 2.4.5-p15
- 2.4.5-p16
2.4.4 リリースラインのバージョンはサポート終了となり、この記事の対象外となります。
複製する手順:
-
CSP モジュールが有効になっていることを確認します。
-
実稼動モードに切り替え、JS アセットの縮小とバンドルを有効にします。
-
静的コンテンツとフラッシュキャッシュをデプロイします。
-
ストアフロントに移動し、注文を試みます。
-
チェックアウトフローの各ステップ中に、ブラウザーコンソールでJS エラーを確認します。
- エラーやチェックアウトが明示的に失敗した場合、ストアに影響が及びます。
- エラーがなく、注文の配置が可能な場合は、 チェックアウト ページに
mixins.min.jsが存在するかどうかを確認します。mixins.min.jsが見つからないが、チェックアウトが機能する場合 – 問題は存在しますが、ストアには明らかに影響しません。
原因
CSP機能を変更すると、バンドルが有効になっている場合に、ファイルパスが正しくないため、縮小JS ファイルのサブリソース整合性(SRI)ハッシュが正しく生成されなくなりました。
これにより、mixins.min.jsとstatic.min.jsが チェックアウト ページで適切にレンダリングされなくなり、注文処理中に様々なエラーが発生しました。
解決策 resolution
影響を受けるバージョンで実行されているストアでは、対応するパッチを適用して問題を解決する必要があります。
注:以下に示すパッチファイルは、同じマイナーバージョンの後のパッチリリースと互換性があることを確認しました。
- バージョン 2.4.5-p15および以降2.4.5 パッチリリース の場合
- バージョン 2.4.6-p13 / 2.4.7-p8以降の2.4.6および2.4.7 パッチリリース の場合
- バージョン 2.4.8-p3以降の2.4.8 パッチリリースの場合
これらのパッチは、上記のCSP関連の変更を元に戻し、CSP機能をその変更前の状態に戻します。
注:これらのパッチを適用すると、SRI機能に関連する以前に知られていたいくつかの問題が再導入されます。
- バージョン 2.4.7-p8以前では、SRI ハッシュは
sri-hashes.jsonに保存されるのではなく、再びキャッシュされます。 - バージョン 2.4.8-p3以前では、バンドル/マージされたJS アセットは整合性ハッシュの検証を受けません。
- バージョン 2.4.8-p3のクラウドインスタンスでは、誤って生成された
sri-hashes.jsonファイルを持つ可能性があり、JS アセットのほんの一部に対してのみSRI ハッシュが含まれます。
パッチの適用方法
ファイルを解凍し、詳しい手順については、Adobeが提供するコンポーザーパッチの適用方法を参照してください。