Fehlerbehebung beim Erstellen einer Bestellseite im eingeschränkten Modus CSP
Dieser Artikel enthält Erklärungen und Fehlerbehebungen für die Probleme in Adobe Commerce 2.4.7 beim Erstellen einer Bestellung auf der Admin-Seite mit CSP restricted mode ist Aktiviert. Die "Weigerung, Inline-Skript auszuführen, weil sie gegen die folgende Content Security Policy-Anweisung 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 Admin -Seite zum Erstellen einer Bestellung ist fehlerhaft oder kann nicht geladen werden
Die Admin-Seite Reihenfolge erstellen ist beschädigt oder kann nicht geladen werden. Die Fehlermeldung "Abgelehnt, Inline-Skript auszuführen, da sie gegen die folgende Content Security Policy-Anweisung verstößt: "script-src …"-Fehlermeldung im Browser-Konsolenprotokoll.
Zu reproduzierende Schritte:
- Gehen Sie zu Sales > Orders.
- Erstellen Sie eine neue Bestellung.
Erwartete Ergebnisse:
Die Seite Admin create order wird normal geladen.
Tatsächliche Ergebnisse:
Die Seite Admin Bestellung erstellen 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 Admin- Seite zum Erstellen der Bestellung, mit der "Verweigert, Inline-Skript auszuführen, da sie gegen die folgende Content Security Policy-Anweisung verstößt: Fehlermeldung "script-src …" im Browser-Konsolenprotokoll.
Zu reproduzierende Schritte:
- Gehen Sie zu Sales > Orders.
- Erstellen Sie eine neue Bestellung.
- Erstellen Sie einen neuen Kunden.
- Geben Sie die Kundendetails ein.
- Geben Sie die Bestelldetails (Produkte, Versandmethode) ein.
- 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 Administrator kann keine Bestellung aufgeben
Ein Administrator kann auf der Admin-Seite Bestellseite erstellen keine Bestellung senden, mit der 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 zu Sales > Orders.
- Erstellen Sie eine neue Bestellung.
- Erstellen Sie einen neuen Kunden.
- Geben Sie die Kundendetails ein.
- Geben Sie die Bestelldetails (Produkte, Versandmethode) ein.
- Wählen Sie eine Zahlungsmethode aus.
- Übermitteln Sie die Bestellung.
Erwartete Ergebnisse:
Sie können eine Bestellung erfolgreich versenden.
Tatsächliche Ergebnisse:
Sie können keine Bestellung senden. 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.