Maison  >  Questions et réponses  >  le corps du texte

Violation de la directive de politique de sécurité du contenu : le script en ligne n'est pas conforme à la spécification "script-src 'self'"

<p>J'utilise <code>react-create-app</code> pour créer mon extension Chrome. Lorsque j'utilise <code>npm run build</code> dans React-create-app, j'obtiens l'erreur suivante : </p> <blockquote> <p>L'exécution du script en ligne est refusée car elle viole la directive de politique de sécurité du contenu suivante : "script-src 'self'". Pour activer l'exécution en ligne, utilisez le mot-clé "unsafe-inline", un hachage ('sha256-5=') ou un nom occasionnel unique ('nonce-...'). </p> </blockquote> <p><code>index.html</code>Erreur</p> <pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="fr"> <tête> <meta charset="utf-8" /> <link rel="icône de raccourci" href="%PUBLIC_URL%/favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content="#000000" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /> <lien rel="feuille de style" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" intégrité="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonyme" /> <!-- Manifest.json fournit des métadonnées utilisées lorsque votre application Web est installée sur l'appareil mobile ou le bureau d'un utilisateur. Voir https://developers.google.com/web/fundamentals/web-app-manifest/ ---> <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> <!-- Notez l'utilisation de %PUBLIC_URL% dans la balise ci-dessus. Pendant le processus de construction, il sera remplacé par l'URL du dossier « public ». Seuls les fichiers du dossier « public » peuvent être référencés à partir du HTML. Contrairement à "/favicon.ico" ou "favicon.ico", "%PUBLIC_URL%/favicon.ico" fonctionnera correctement sur les routes client et les URL publiques non root. Exécutez `npm run build` pour savoir comment configurer les URL publiques non root. ---> <titre>React App</titre> ≪/tête> <corps> <noscript>Vous devez activer JavaScript pour exécuter cette application. </noscript> <identifiant div="racine"></div> <!-- Ce fichier HTML est un modèle. Si vous l'ouvrez directement dans votre navigateur, vous verrez une page blanche. Vous pouvez ajouter des polices Web, des balises méta ou des analyses dans ce fichier. L'étape de construction placera les scripts regroupés dans des balises ``. Pour démarrer le développement, exécutez `npm start` ou `yarn start`. Pour créer un bundle de production, utilisez « npm run build » ou « yarn build ». ---> </corps> </html></pre> <p><strong>manifest.json</strong></p> <pre class="brush:php;toolbar:false;">{ "version_manifeste": 2, "name": "Extension Chrome du projet IC", "description": "Cette extension est un point de départ pour créer une véritable extension Chrome", "version": "0.0.1", "action_navigateur": { "default_popup": "index.html", "default_title": "Ouvrez la popup" }, "Icônes": { "16": "actifs/icône-128.png", "48": "actifs/icône-128.png", "128": "actifs/icône-128.png" }, "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'" }</pré> <p><br /></p>
P粉276064178P粉276064178432 Il y a quelques jours518

répondre à tous(1)je répondrai

  • P粉447785031

    P粉4477850312023-08-16 13:58:19

    Après quelques heures frustrantes, j'ai trouvé une solution qui fonctionne. L'exécution de scripts diffère entre Mac et PC. La plupart des réponses que j'ai trouvées présentaient la différence avec "set" et sans "set". Certains avec "&&", d'autres sans... mais aucun ne fonctionne pour moi.

    En bref : utilisez le package npm "cross-env" comme ceci :

    cross-env INLINE_RUNTIME_CHUNK=false react-scripts build

    Cela fonctionne sur PC, probablement aussi sur Mac. Bien sûr, vous devez npm install --save-dev cross-env avant cela.

    répondre
    0
  • Annulerrépondre