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:

  1. Gehen Sie zu Sales > Orders.
  2. 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:

  1. Whitelist die blockierten Skripte, die die SecureHtmlRenderer-Klasse verwenden.

  2. 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 in Magento\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();
        }
    }
    
  3. 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:

  1. Gehen Sie zu Sales > Orders.
  2. Erstellen Sie eine neue Bestellung.
  3. Erstellen Sie einen neuen Kunden.
  4. Geben Sie die Kundendetails ein.
  5. Geben Sie die Bestelldetails (Produkte, Versandmethode) ein.
  6. 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:

  1. Whitelist die blockierten Skripte, die die SecureHtmlRenderer-Klasse verwenden.

  2. 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 in Magento\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();
        }
    }
    
  3. 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:

  1. Gehen Sie zu Sales > Orders.
  2. Erstellen Sie eine neue Bestellung.
  3. Erstellen Sie einen neuen Kunden.
  4. Geben Sie die Kundendetails ein.
  5. Geben Sie die Bestelldetails (Produkte, Versandmethode) ein.
  6. Wählen Sie eine Zahlungsmethode aus.
  7. Ü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:

  1. Whitelist die blockierten Skripte, die die SecureHtmlRenderer-Klasse verwenden.

  2. 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 in Magento\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();
        }
    }
    
  3. Fügen Sie der csp_whitelist.xml -Datei Ihres Moduls einen hash hinzu.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a