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:

  1. Gehen Sie zur Storefront.
  2. 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:

  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 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:

  1. Gehen Sie zur Storefront.
  2. Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit dem Checkout 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-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 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:

  1. Gehen Sie zur Storefront.
  2. Fügen Sie ein Produkt zum Warenkorb hinzu und fahren Sie mit dem Checkout fort.
  3. Wählen Sie eine Zahlungsmethode aus.
  4. 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:

  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