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

再現手順 :

  1. CSP モジュールが有効になっていることを確認します。

  2. 実稼動モードに切り替え、JS アセットの縮小とバンドルを有効にします。

  3. 静的なコンテンツをデプロイし、キャッシュをフラッシュします。

  4. ストアフロントに移動し、注文を試みます。

  5. チェックアウトフローの各ステップで、ブラウザーコンソールで JS エラーを確認します。

    • エラーが発生したり、チェックアウトが明示的に失敗した場合は、ストアが影響を受けます。
    • エラーがなく、注文が可能な場合は、mixins.min.js チェックアウト ページに が表示されているかどうかを確認します。 mixins.min.js が見つからないがチェックアウトが機能する場合(問題は存在するが、ストアに目に見えて影響はない)。

原因

バンドルが有効な場合、ファイルパスが正しくないため、CSP 機能を変更すると、縮小された JS ファイルの Subresource Integrity (SRI)ハッシュが誤って生成されていました。

これにより、mixins.min.jsstatic.min.jsチェックアウト ページに正しくレンダリングされなくなり、注文処理中に様々なエラーが発生しました。

解決策 resolution

影響を受けるバージョンのいずれかで動作しているストアでは、問題を解決するために、対応するパッチを適用する必要があります。

これらのパッチは、上記の 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 ファイルが誤って生成される場合があります。

パッチの適用方法

ファイルを解凍し、Adobeが提供する Composer パッチの適用方法 ​ を参照してください。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f