Fehlerbehebung für die Storefront-Checkout-Seite CSP eingeschränkten Modus
Dieser Artikel enthält Erläuterungen und Fehlerbehebungen für Probleme mit Adobe Commerce 2.4.7 beim Anzeigen der Kaufbestätigungsseite in CSP restricted mode mit der Fehlermeldung "Ausführung des Inline-Skripts abgelehnt, da es gegen die folgende Content Security Policy-Direktive verstößt: „script-src …" im Protokoll der Browser-Konsole.
Betroffene Produkte und Versionen
Adobe Commerce auf Cloud-Infrastruktur, Adobe Commerce On-Premise und Magento Open Source:
- 2,4,7
- 2.4.6-pX
- 2,4,5-pX
- 2.4.4-pX
Problem - Storefront-Checkout-Seite ist fehlerhaft oder kann nicht geladen werden
Die Storefront Checkout-Seite ist fehlerhaft oder kann nicht geladen werden, mit dem Fehlerhinweis "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Anweisung verstößt: Fehlermeldung „script-src …" im Protokoll der Browser-Konsole.
Schritte zur Reproduktion:
- Geh zum Laden.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit der Kasse fort.
Erwartete Ergebnisse:
Die Checkout-Seite wird vollständig normal geladen.
Tatsächliche Ergebnisse:
Die Checkout-Seite ist leer oder es fehlen Komponenten. Der folgende JS wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …"
Ursache
In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode
für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only
für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline
Schlüsselwort in der script-src
-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.
Lösung
Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:
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 der blockierten Skripte mithilfe der
SecureHtmlRenderer
-Klasse -
Verwenden Sie die
CSPNonceProvider
-Klasse, um die Ausführung von Skripten zu ermöglichen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.Verwenden Sie die
generateNonce
Funktion inMagento\Csp\Helper\CspNonceProvider
, um eine nonce Zeichenfolge abzurufen.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 hash zur
csp_whitelist.xml
-Datei Ihres Moduls hinzu.
Problem - Zahlungsmethode fehlt oder funktioniert nicht
Die Zahlungsmethode fehlt oder funktioniert nicht auf der Seite Storefront Checkout mit der Fehlermeldung "Ausführung des Inline-Skripts wurde abgelehnt, da es gegen die folgende Content Security Policy-Direktive verstößt: „script-src …" im Protokoll der Browser-Konsole.
Schritte zur Reproduktion:
- Geh zum Laden.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit der Kasse 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 wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …"
Ursache
In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode
für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only
für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline
Schlüsselwort in der script-src
-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.
Lösung
Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:
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 der blockierten Skripte mithilfe der
SecureHtmlRenderer
-Klasse -
Verwenden Sie die
CSPNonceProvider
-Klasse, um die Ausführung von Skripten zu ermöglichen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.Verwenden Sie die
generateNonce
Funktion inMagento\Csp\Helper\CspNonceProvider
, um eine nonce Zeichenfolge abzurufen.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 hash zur
csp_whitelist.xml
-Datei Ihres Moduls hinzu.
Problem - Kunde kann keine Bestellung aufgeben
Eine Kundin oder ein Kunde kann keine Bestellung aufgeben, wobei das Skript "Ausführung des Inline-Skripts abgelehnt, da es die folgende Content Security Policy-Direktive verletzt: Fehlermeldung „script-src …" im Protokoll der Browser-Konsole.
Schritte zur Reproduktion:
- Geh zum Laden.
- Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit der Kasse fort.
- Wählen Sie eine Zahlungsmethode aus.
- Klicken Sie Bestellung aufgeben.
Erwartete Ergebnisse:
Sie können eine Bestellung erfolgreich aufgeben.
Tatsächliche Ergebnisse:
Sie können keine Bestellung aufgeben. Der folgende JS wird im Protokoll der Browser-Konsole angezeigt: "Die Ausführung des Inline-Skripts wurde abgelehnt, da es die folgende Content Security Policy-Anweisung verletzt: „script-src …"
Ursache
In Adobe Commerce und Magento Open Source ab Version 2.4.7 ist CSP standardmäßig in restrict-mode
für Zahlungsseiten in den Bereichen Storefront und Admin und im report-only
für alle anderen Seiten konfiguriert.
Der entsprechende CSP-Header enthält nicht das unsafe-inline
Schlüsselwort in der script-src
-Direktive für Zahlungsseiten. Außerdem sind nur whitelisted Inline-Skripte zulässig.
Lösung
Benutzer sehen möglicherweise Browser-Fehler, da bestimmte Skripte aufgrund von CSP blockiert werden:
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 der blockierten Skripte mithilfe der
SecureHtmlRenderer
-Klasse -
Verwenden Sie die
CSPNonceProvider
-Klasse, um die Ausführung von Skripten zu ermöglichen.
Adobe Commerce und Magento Open Source 2.4.7 und höher enthalten einen Content Security Policy (CSP) nonce, um die Erstellung eindeutiger nonce für jede Anfrage zu erleichtern. Diese nonce werden dann an den CSP-Header angehängt.Verwenden Sie die
generateNonce
Funktion inMagento\Csp\Helper\CspNonceProvider
, um eine nonce Zeichenfolge abzurufen.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 hash zur
csp_whitelist.xml
-Datei Ihres Moduls hinzu.