Probleem met uitchecken van storefront oplossen in de beperkte modus van CSP
Dit artikel verstrekt verklaringen en moeilijke situaties voor Adobe Commerce 2.4.7 kwesties terwijl het bekijken van de controlepagina in CSP restricted mode, met "die wordt geweigerd om inline manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"foutenmelding in het browser consolelogboek.
Betrokken producten en versies
Adobe Commerce op cloudinfrastructuur, Adobe Commerce op locatie en Magento Open Source:
- 2.4.7.
- 2.4.6-pX
- 2.4.5-pX
- 2.4.4-pX
Probleem - Afhandelingspagina voor winkelobject is verbroken of kan niet worden geladen
De storefront controle pagina is gebroken of kan niet laden, met "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.
Stappen om te reproduceren:
- Ga naar de winkel.
- Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.
Verwachte resultaten :
De uitcheckpagina wordt normaal volledig geladen.
Ware resultaten :
De uitcheckpagina is leeg of bevat ontbrekende componenten. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"
Oorzaak
In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode
, voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only
-modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline
binnen de aanwijzing script-src
voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.
Oplossing
Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
om deze kwestie te bevestigen, moet u één van beide :
-
Whitelistde geblokkeerde manuscripten die de
SecureHtmlRenderer
klasse gebruiken. -
Gebruik de klasse
CSPNonceProvider
om toe te staan dat scripts worden uitgevoerd.
Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.Gebruik de functie
generateNonce
inMagento\Csp\Helper\CspNonceProvider
om een tekenreeks nonce te verkrijgen.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(); } }
-
voeg a hashaan het dossier van uw module
csp_whitelist.xml
toe.
Uitgave - Betalingsmethode ontbreekt of werkt niet
De betalingsmethode ontbreekt of werkt niet aan de storefront controle pagina, met "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.
Stappen om te reproduceren:
- Ga naar de winkel.
- Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.
- Selecteer een betalingsmethode.
Verwachte resultaten :
U kunt een betalingsmethode selecteren en doorgaan met het plaatsen van een bestelling.
Ware resultaten :
De betalingsmethode ontbreekt of werkt niet. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"
Oorzaak
In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode
, voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only
-modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline
binnen de aanwijzing script-src
voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.
Oplossing
Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
om deze kwestie te bevestigen, moet u één van beide :
-
Whitelistde geblokkeerde manuscripten die de
SecureHtmlRenderer
klasse gebruiken. -
Gebruik de klasse
CSPNonceProvider
om toe te staan dat scripts worden uitgevoerd.
Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.Gebruik de functie
generateNonce
inMagento\Csp\Helper\CspNonceProvider
om een tekenreeks nonce te verkrijgen.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(); } }
-
voeg a hashaan het dossier van uw module
csp_whitelist.xml
toe.
Probleem - Klant kan geen bestelling plaatsen
Een klant kan geen orde plaatsen, met "die wordt geweigerd om inline manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud schendt: "manuscript-src…"foutenmelding in het browser consolelogboek.
Stappen om te reproduceren:
- Ga naar de winkel.
- Voeg een product toe aan het winkelwagentje en ga verder met het afrekenen.
- Selecteer een betalingsmethode.
- Klik de Orde van de Plaats.
Verwachte resultaten :
U kunt een bestelling plaatsen.
Ware resultaten :
U kunt geen bestelling plaatsen. De volgende JS fout wordt getoond in het browser consolelogboek: "die wordt geweigerd om gealigneerd manuscript uit te voeren omdat het de volgende richtlijn van het Beleid van de Veiligheid van de Inhoud overtreedt: "manuscript-src…"
Oorzaak
In Adobe Commerce en Magento Open Source versie 2.4.7 en hoger is CSP standaard geconfigureerd in restrict-mode
, voor betalingspagina's in de opslagruimte en in de beheergebieden, en in de report-only
-modus voor alle andere pagina's.
De corresponderende header CSP bevat niet het trefwoord unsafe-inline
binnen de aanwijzing script-src
voor betaalpagina's. Bovendien zijn alleen whitelisted inlinescripts toegestaan.
Oplossing
Gebruikers zien mogelijk browserfouten omdat bepaalde scripts zijn geblokkeerd door CSP :
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
om deze kwestie te bevestigen, moet u één van beide :
-
Whitelistde geblokkeerde manuscripten die de
SecureHtmlRenderer
klasse gebruiken. -
Gebruik de klasse
CSPNonceProvider
om toe te staan dat scripts worden uitgevoerd.
Adobe Commerce en Magento Open Source 2.4.7 en hoger bevatten een Content Security Policy (CSP) nonce -provider om het genereren van unieke nonce -tekenreeksen voor elke aanvraag te vergemakkelijken. Deze nonce -tekenreeksen worden vervolgens aan de CSP -koptekst gekoppeld.Gebruik de functie
generateNonce
inMagento\Csp\Helper\CspNonceProvider
om een tekenreeks nonce te verkrijgen.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(); } }
-
voeg a hashaan het dossier van uw module
csp_whitelist.xml
toe.