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:

  1. Geh zum Laden.
  2. 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:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

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

  1. Geh zum Laden.
  2. Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit der Kasse fort.
  3. 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:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

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

  1. Geh zum Laden.
  2. Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit der Kasse fort.
  3. Wählen Sie eine Zahlungsmethode aus.
  4. 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:

  1. Whitelist der blockierten Skripte mithilfe der SecureHtmlRenderer-Klasse

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

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