Fehlerbehebung für die Storefront-Checkout-Seite im eingeschränkten Modus CSP
In diesem Artikel finden Sie Erklärungen und Fehlerbehebungen zu den Adobe Commerce 2.4.7-Problemen beim Anzeigen der Checkout-Seite in CSP restricted mode, wobei die Inline-Skripterstellung "abgelehnt wurde, da sie gegen die folgende Content Security Policy-Richtlinie verstößt: Fehlermeldung "script-src …" im Browser-Konsolenprotokoll.
Betroffene Produkte und Versionen
Adobe Commerce zur Cloud-Infrastruktur, Adobe Commerce vor Ort und Magento Open Source:
- 2,4,7
- 2.4.6-pX
- 2.4.5-pX
- 2.4.4-pX
Problem - Die Storefront-Checkout-Seite ist fehlerhaft oder kann nicht geladen werden
Die Seite "storeFront Checkout" ist beschädigt oder kann nicht geladen werden, wobei die Fehlermeldung "Abgelehnt, Inline-Skript auszuführen, da sie gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …" im Browser-Konsolenprotokoll.
Zu reproduzierende Schritte:
- Gehen Sie zur Storefront.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit dem Checkout fort.
Erwartete Ergebnisse:
Die Checkout-Seite wird normal vollständig geladen.
Tatsächliche Ergebnisse:
Die Checkout-Seite ist leer oder es fehlen Komponenten. Der folgende JS-Fehler wird im Browser-Konsolenprotokoll angezeigt: "Weigert, Inline-Skript auszuführen, da er gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …"
Ursache
In Adobe Commerce und Magento Open Source Version 2.4.7 und höher ist CSP standardmäßig für Zahlungsseiten in den Storefront- und Admin-Bereichen und im Modus report-only
für alle anderen Seiten konfiguriert.restrict-mode
Die entsprechende Kopfzeile CSP enthält nicht das Schlüsselwort unsafe-inline
innerhalb der Anweisung script-src
für Zahlungsseiten. Außerdem sind nur Inline-Skripte vom Typ whitelisted zulässig.
Lösung
Benutzern werden möglicherweise Browserfehler angezeigt, da bestimmte Skripte aufgrund von CSP blockiert wurden:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Um dieses Problem zu beheben, müssen Sie entweder:
-
Whitelist die blockierten Skripte, die die
SecureHtmlRenderer
-Klasse verwenden. -
Verwenden Sie die Klasse
CSPNonceProvider
, um die Ausführung von Skripten zuzulassen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce -Provider, um die Erstellung eindeutiger nonce -Zeichenfolgen für jede Anfrage zu erleichtern. Diese nonce -Zeichenfolgen werden dann an die CSP -Kopfzeile angehängt.Verwenden Sie die Funktion
generateNonce
inMagento\Csp\Helper\CspNonceProvider
, um eine nonce -Zeichenfolge zu erhalten.code language-php use Magento\Csp\Helper\CspNonceProvider; class MyClass { /** * @var CspNonceProvider */ private $cspNonceProvider; /** * @param CspNonceProvider $cspNonceProvider */ public function __construct(CspNonceProvider $cspNonceProvider) { $this->cspNonceProvider = $cspNonceProvider } /** * Get CSP Nonce * * @return String */ public function getNonce(): string { return $this->cspNonceProvider->generateNonce(); } }
-
Fügen Sie der
csp_whitelist.xml
-Datei Ihres Moduls einen hash hinzu.
Problem - Zahlungsmethode fehlt oder funktioniert nicht
Die Zahlungsmethode fehlt oder funktioniert nicht auf der Seite storeFront Checkout , wobei die Fehlermeldung "Abgelehnt, Inline-Skript auszuführen, da sie gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …" im Browser-Konsolenprotokoll.
Zu reproduzierende Schritte:
- Gehen Sie zur Storefront.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit dem Checkout fort.
- Wählen Sie eine Zahlungsmethode aus.
Erwartete Ergebnisse:
Sie können eine Zahlungsmethode auswählen und mit der erfolgreichen Bestellung fortfahren.
Tatsächliche Ergebnisse:
Die Zahlungsmethode fehlt oder funktioniert nicht. Der folgende JS-Fehler wird im Browser-Konsolenprotokoll angezeigt: "Weigert, Inline-Skript auszuführen, da er gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …"
Ursache
In Adobe Commerce und Magento Open Source Version 2.4.7 und höher ist CSP standardmäßig für Zahlungsseiten in den Storefront- und Admin-Bereichen und im Modus report-only
für alle anderen Seiten konfiguriert.restrict-mode
Die entsprechende Kopfzeile CSP enthält nicht das Schlüsselwort unsafe-inline
innerhalb der Anweisung script-src
für Zahlungsseiten. Außerdem sind nur Inline-Skripte vom Typ whitelisted zulässig.
Lösung
Benutzern werden möglicherweise Browserfehler angezeigt, da bestimmte Skripte aufgrund von CSP blockiert wurden:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Um dieses Problem zu beheben, müssen Sie entweder:
-
Whitelist die blockierten Skripte, die die
SecureHtmlRenderer
-Klasse verwenden. -
Verwenden Sie die Klasse
CSPNonceProvider
, um die Ausführung von Skripten zuzulassen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce -Provider, um die Erstellung eindeutiger nonce -Zeichenfolgen für jede Anfrage zu erleichtern. Diese nonce -Zeichenfolgen werden dann an die CSP -Kopfzeile angehängt.Verwenden Sie die Funktion
generateNonce
inMagento\Csp\Helper\CspNonceProvider
, um eine nonce -Zeichenfolge zu erhalten.code language-php use Magento\Csp\Helper\CspNonceProvider; class MyClass { /** * @var CspNonceProvider */ private $cspNonceProvider; /** * @param CspNonceProvider $cspNonceProvider */ public function __construct(CspNonceProvider $cspNonceProvider) { $this->cspNonceProvider = $cspNonceProvider } /** * Get CSP Nonce * * @return String */ public function getNonce(): string { return $this->cspNonceProvider->generateNonce(); } }
-
Fügen Sie der
csp_whitelist.xml
-Datei Ihres Moduls einen hash hinzu.
Problem - Der Kunde kann keine Bestellung aufgeben
Ein Kunde kann keine Bestellung aufgeben, mit dem "Verweigert, Inline-Skript auszuführen, da es gegen die folgende Content Security Policy-Richtlinie verstößt: Fehlermeldung "script-src …" im Browser-Konsolenprotokoll.
Zu reproduzierende Schritte:
- Gehen Sie zur Storefront.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit dem Checkout fort.
- Wählen Sie eine Zahlungsmethode aus.
- Klicken Sie auf Bestellung platzieren.
Erwartete Ergebnisse:
Sie können erfolgreich eine Bestellung aufgeben.
Tatsächliche Ergebnisse:
Sie können keine Bestellung aufgeben. Der folgende JS-Fehler wird im Browser-Konsolenprotokoll angezeigt: "Weigert, Inline-Skript auszuführen, da er gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …"
Ursache
In Adobe Commerce und Magento Open Source Version 2.4.7 und höher ist CSP standardmäßig für Zahlungsseiten in den Storefront- und Admin-Bereichen und im Modus report-only
für alle anderen Seiten konfiguriert.restrict-mode
Die entsprechende Kopfzeile CSP enthält nicht das Schlüsselwort unsafe-inline
innerhalb der Anweisung script-src
für Zahlungsseiten. Außerdem sind nur Inline-Skripte vom Typ whitelisted zulässig.
Lösung
Benutzern werden möglicherweise Browserfehler angezeigt, da bestimmte Skripte aufgrund von CSP blockiert wurden:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Um dieses Problem zu beheben, müssen Sie entweder:
-
Whitelist die blockierten Skripte, die die
SecureHtmlRenderer
-Klasse verwenden. -
Verwenden Sie die Klasse
CSPNonceProvider
, um die Ausführung von Skripten zuzulassen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce -Provider, um die Erstellung eindeutiger nonce -Zeichenfolgen für jede Anfrage zu erleichtern. Diese nonce -Zeichenfolgen werden dann an die CSP -Kopfzeile angehängt.Verwenden Sie die Funktion
generateNonce
inMagento\Csp\Helper\CspNonceProvider
, um eine nonce -Zeichenfolge zu erhalten.code language-php use Magento\Csp\Helper\CspNonceProvider; class MyClass { /** * @var CspNonceProvider */ private $cspNonceProvider; /** * @param CspNonceProvider $cspNonceProvider */ public function __construct(CspNonceProvider $cspNonceProvider) { $this->cspNonceProvider = $cspNonceProvider } /** * Get CSP Nonce * * @return String */ public function getNonce(): string { return $this->cspNonceProvider->generateNonce(); } }
-
Fügen Sie der
csp_whitelist.xml
-Datei Ihres Moduls einen hash hinzu.