Checkout schlägt fehl, wenn JS-Minimierung und -Bündelung aktiviert sind
Dieser Artikel enthält einen Patch für das Adobe Commerce-Problem, der verhindert, dass das Auschecken ordnungsgemäß funktioniert, wenn die Minimierung, Bündelung und (in einigen Fällen) das Zusammenführen von JavaScript (JS)-Assets aktiviert sind.
Beschreibung description
Umgebung
Adobe Commerce, alle Bereitstellungsmethoden.
Problem/Symptome
Jüngste Änderungen an der Funktion der Content Security Policy (CSP) haben dazu geführt, dass die Checkout-Funktion fehlschlägt, wenn die Minimierung, Bündelung und in einigen Fällen das Zusammenführen von JS-Assets aktiviert ist. Dieses Problem kann die Auftragserteilung in der Storefront vollständig blockieren.
Betroffene Produkte und Versionen
Das Problem wurde in früheren Patch-Versionen eingeführt und ist in nachfolgenden Patch-Versionen derselben Nebenversion weiterhin ungelöst.
Betroffene Versionen umfassen (sind aber nicht auf beschränkt auf):
- 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
Versionen in der Version 2.4.4 werden nicht mehr unterstützt und sind nicht Gegenstand dieses Artikels.
Schritte zur Reproduktion:
-
Stellen Sie sicher, dass das CSP-Modul aktiviert ist.
-
Wechseln Sie in den Produktionsmodus und aktivieren Sie die Minimierung und Bündelung von JS-Assets.
-
Statischen Inhalt bereitstellen und Cache leeren.
-
Navigieren Sie zur Storefront und versuchen Sie, eine Bestellung aufzugeben.
-
Suchen Sie in der Browser-Konsole bei jedem Schritt des Checkout-Flusses nach JS-Fehlern.
- Wenn Fehler auftreten oder das Auschecken explizit fehlschlägt, ist der Store betroffen.
- Wenn keine Fehler vorliegen und eine Bestellplatzierung möglich ist, überprüfen Sie, ob
mixins.min.jsauf der Seite Checkout vorhanden ist. Wennmixins.min.jsfehlt, der Checkout jedoch funktioniert, liegt ein Problem vor, das sich jedoch nicht sichtbar auf den Store auswirkt.
Ursache
Änderungen an der CSP-Funktion führten aufgrund falscher Dateipfade zu einer falschen Generierung von Subresource Integrity (SRI)-Hashes für minimierte JS-Dateien, wenn das Bundle aktiviert ist.
Dadurch wurde verhindert, dass mixins.min.js und static.min.js ordnungsgemäß auf der Seite Checkout“ gerendert wurden was zu verschiedenen Fehlern bei der Auftragserteilung führte.
Lösung resolution
Stores, die mit einer der betroffenen Versionen ausgeführt werden, sollten den entsprechenden Patch anwenden, um das Problem zu beheben.
Hinweis Die unten aufgeführten Patch-Dateien wurden dahingehend überprüft, ob sie mit späteren Patch-Versionen derselben Nebenversion kompatibel sind.
- Für die Patch-Versionen 2.4.5-p15 und später 2.4.5
- Für die Versionen 2.4.6-p13 / 2.4.7-p8 und spätere Patch-Versionen 2.4.6 und 2.4.7
- Für die Patch-Versionen 2.4.8-p3 und höher 2.4.8
Diese Patches kehren die oben genannten CSP-bezogenen Änderungen um und stellen die CSP-Funktion in ihren Status vor diesen Änderungen wieder her.
Hinweis: Durch die Anwendung dieser Patches werden einige zuvor bekannte Probleme im Zusammenhang mit der SRI-Funktionalität wieder eingeführt:
- Ab Version 2.4.7-p8 werden SRI-Hashes erneut zwischengespeichert, anstatt in
sri-hashes.jsongespeichert zu werden. - Ab Version 2.4.8-p3 werden gebündelte/zusammengeführte JS-Assets nicht mehr einer Integritäts-Hash-Validierung unterzogen.
- Cloud-Instanzen in Version 2.4.8-p3 können fälschlicherweise
sri-hashes.json-Dateien generiert haben, die SRI-Hashes nur für einen Bruchteil der JS-Assets enthalten.
Anbringen des Pflasters
Entpacken Sie die Datei und lesen Sie Anleitung zum Anwenden eines von Adobe bereitgestellten ComposerPatches .