Errore CSP quando si utilizza una libreria di terze parti in un plugin

Dopo molti tentativi e approcci diversi, sono riuscito a caricare con successo una libreria di terze parti da utilizzare nel mio plugin.

La libreria si trova in public/javascripts/some-library.js.

Nel mio controller, riesco a caricare correttamente lo script tramite:

loadScript("/plugins/my-plugin/javascripts/some-library.js")

In alcune occasioni, in quel file, la libreria crea dei Blob e li assegna a variabili che vengono utilizzate. Ad esempio:

var A=URL.createObjectURL(new Blob(['\n\tsome code snippet...],{type:"application/javascript"}))

E ogni volta che provo a utilizzare la libreria nel codice del mio plugin, ottengo:

Refused to load the script 'blob:http://localhost:4200/f33a6788-a853-4286-883a-48cb8e2c9cc1' because it violates the following Content Security Policy directive: "script-src http://localhost:4200/assets/ ecc ecc...

Quale sarebbe il modo migliore per aggirare questo problema?

Grazie per qualsiasi aiuto e suggerimento!

1 Mi Piace

E se aggiungessi semplicemente http://localhost:4200 alla CSP?

Ho provato anche quello, e non ha cambiato nulla :confused:

Cosa ne pensi di blob:http://localhost:4200?

Ci ho provato anche, ma è un’istruzione non valida per una CSP :confused:

Per chiunque si imbatta in questo, la riga corretta da aggiungere a script src di csp è blob:

Aspetta! Non hai bisogno di implementare CSP in fase di sviluppo, non sei a rischio di attacchi?

Potrebbe anche bloccare alcuni strumenti per sviluppatori.

Basta disattivare questa impostazione:

Semplice.

Consiglierei di rimandare questo grattacapo finché non avrai un plugin funzionante da testare su un server di staging di produzione.

Ero effettivamente nella fase di preparazione per la produzione, quindi questo era l’ultimo grattacapo da risolvere. E inoltre, non mi piace rimandare queste cose, specialmente quando ho bisogno di scoprire se potrebbero essere un potenziale ostacolo e devo trovare un’altra strada del tutto :man_surfing:

Sì, ma dovresti lavorare sulla configurazione CSP sul server di staging di produzione che ha un vero indirizzo Internet.

localhost non è un indirizzo Internet! :slight_smile::wink: Non è nemmeno https …

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.