Risolvere i problemi relativi alla pagina Crea ordine in CSP modalità con restrizioni
Questo articolo fornisce spiegazioni e correzioni per i problemi di Adobe Commerce 2.4.7 durante la creazione di un ordine sul lato Amministratore con CSP restricted mode è Abilitato, con "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …" nel registro della console del browser.
Prodotti e versioni interessati
Adobe Commerce su infrastruttura cloud, Adobe Commerce on-premise e Magento Open Source:
- 2.4.7.
- 2,4,6-pX
- 2,4,5-pX
- 2,4,4-pX
Problema - Amministratore crea ordine la pagina è interrotta o non è in grado di caricarla
L’Amministratore crea ordine la pagina è interrotta o non è in grado di caricarla, con il simbolo "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …" nel registro della console del browser.
Passaggi da riprodurre:
- Vai a Sales > Orders.
- Crea un nuovo ordine.
Risultati previsti:
L’Amministratore crea ordine la pagina viene caricata completamente normalmente.
Risultati effettivi:
L’Amministratore crea ordine La pagina è vuota o contiene componenti mancanti. I seguenti elementi JS viene visualizzato un errore nel registro della console del browser: "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …"
Causa
In Adobe Commerce e Magento Open Source versione 2.4.7 e successive, CSP è configurato in restrict-mode
, per impostazione predefinita, per le pagine di pagamento nelle aree vetrina e amministrazione e in report-only
per tutte le altre pagine.
Il corrispondente CSP l'intestazione non contiene unsafe-inline
parola chiave all'interno del script-src
direttiva per le pagine di pagamento. Inoltre, solo whitelisted gli script in linea sono consentiti.
Soluzione
Gli utenti potrebbero visualizzare errori del browser a causa di alcuni script bloccati a causa di CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Per risolvere il problema, è necessario::
-
Whitelist gli script bloccati che utilizzano
SecureHtmlRenderer
classe. -
Utilizza il
CSPNonceProvider
classe per consentire l'esecuzione di script.
Adobe Commerce e Magento Open Source 2.4.7 e versioni successive includono Content Security Policy (CSP) nonce per facilitare la generazione di nonce stringhe per ogni richiesta. Questi nonce le stringhe vengono quindi collegate al CSP intestazione.Utilizza il
generateNonce
funzione inMagento\Csp\Helper\CspNonceProvider
per ottenere un nonce stringa.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(); } }
-
Aggiungi un hash al modulo di
csp_whitelist.xml
file.
Problema - Il metodo di pagamento è mancante o non funziona
Metodo di pagamento mancante o non funzionante per l’amministratore pagina di creazione ordine, con "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …" nel registro della console del browser.
Passaggi da riprodurre:
- Vai a Sales > Orders.
- Crea un nuovo ordine.
- Crea un nuovo cliente.
- Inserire i dettagli del cliente.
- Inserire i dettagli dell'ordine (prodotti, metodo di spedizione).
- Seleziona un metodo di pagamento.
Risultati previsti:
Puoi selezionare un metodo di pagamento e procedere con l’ordine.
Risultati effettivi:
Metodo di pagamento mancante o non funzionante. I seguenti elementi JS viene visualizzato un errore nel registro della console del browser: "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …".
Causa
In Adobe Commerce e Magento Open Source versione 2.4.7 e successive, CSP è configurato in restrict-mode
, per impostazione predefinita, per le pagine di pagamento nelle aree vetrina e amministrazione e in report-only
per tutte le altre pagine.
Il corrispondente CSP l'intestazione non contiene unsafe-inline
parola chiave all'interno del script-src
direttiva per le pagine di pagamento. Inoltre, solo whitelisted gli script in linea sono consentiti.
Soluzione
Gli utenti potrebbero visualizzare errori del browser a causa di alcuni script bloccati a causa di CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Per risolvere il problema, è necessario::
-
Whitelist gli script bloccati che utilizzano
SecureHtmlRenderer
classe. -
Utilizza il
CSPNonceProvider
classe per consentire l'esecuzione di script.
Adobe Commerce e Magento Open Source 2.4.7 e versioni successive includono Content Security Policy (CSP) nonce per facilitare la generazione di nonce stringhe per ogni richiesta. Questi nonce le stringhe vengono quindi collegate al CSP intestazione.Utilizza il
generateNonce
funzione inMagento\Csp\Helper\CspNonceProvider
per ottenere un nonce stringa.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(); } }
-
aggiungi un hash al modulo di
csp_whitelist.xml
file.
Problema - L’amministratore non può effettuare un ordine
Un amministratore non può inviare un ordine nell’amministratore crea pagina ordine, con "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …" nel registro della console del browser.
Passaggi da riprodurre:
- Vai a Sales > Orders.
- Crea un nuovo ordine.
- Crea un nuovo cliente.
- Inserire i dettagli del cliente.
- Inserire i dettagli dell'ordine (prodotti, metodo di spedizione).
- Seleziona un metodo di pagamento.
- Invia l’ordine.
Risultati previsti:
Sei in grado di inviare un ordine correttamente.
Risultati effettivi:
Non puoi inviare un ordine. I seguenti elementi JS viene visualizzato un errore nel registro della console del browser: "Si è rifiutato di eseguire lo script in linea perché viola la seguente direttiva del criterio sulla sicurezza dei contenuti: "script-src …"
Causa
In Adobe Commerce e Magento Open Source versione 2.4.7 e successive, CSP è configurato in restrict-mode
, per impostazione predefinita, per le pagine di pagamento nelle aree vetrina e amministrazione e in report-only
per tutte le altre pagine.
Il corrispondente CSP l'intestazione non contiene unsafe-inline
parola chiave all'interno del script-src
direttiva per le pagine di pagamento. Inoltre, solo whitelisted gli script in linea sono consentiti.
Soluzione
Gli utenti potrebbero visualizzare errori del browser a causa di alcuni script bloccati a causa di CSP:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src
Per risolvere il problema, è necessario::
-
Whitelist gli script bloccati che utilizzano
SecureHtmlRenderer
classe. -
Utilizza il
CSPNonceProvider
classe per consentire l'esecuzione di script.
Adobe Commerce e Magento Open Source 2.4.7 e versioni successive includono Content Security Policy (CSP) nonce per facilitare la generazione di nonce stringhe per ogni richiesta. Questi nonce le stringhe vengono quindi collegate al CSP intestazione.Utilizza il
generateNonce
funzione inMagento\Csp\Helper\CspNonceProvider
per ottenere un nonce stringa.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(); } }
-
Aggiungi un hash al modulo di
csp_whitelist.xml
file.