Cordova-refuser d'exécuter inline event handler parce qu'il viole la Politique de sécurité de contenu suivante

je me forme pour le développement D'applications Cordova et je tourne autour d'un problème avec la Politique de sécurité de contenu.

mon application fonctionne avec L'émulateur Android, mais quand je dois exécuter un javascript je reçois un message dans NetBeans (fenêtre de sortie).

Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' https://ssl.gstatic.com". (22:35:56:126 | error, security)
  at www/index.html:58

mon code est en dessous. C'est mon index.HTML. J'essaie de comprendre comment fonctionne le CSP et je pense que je comprends le concept, mais dans ce cas, je ne comprends pas le problème. Ligne 58 commentaire.

<html>        
    <head>   

        <meta http-equiv="Content-Security-Policy" content="default-src 'self' * data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self'; script-src 'self' https://ssl.gstatic.com; media-src *">
        <meta name="format-detection" content="telephone=no">
        <meta name="msapplication-tap-highlight" content="no">
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">

        <title>Hello World</title>

        <link rel="stylesheet" type="text/css" href="css/index.css">

    </head>

    <body>
        <div class="app">
            <h1>Apache Cordova</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
        </div>

        <!--
        line 58
        -->
        <button onclick="capturePhoto();">Capture Photo</button> <br>

        <img style="display:none;width:80px;height:80px;" id="smallImage" src="" />
        <img style="display:none;" id="largeImage" src="" />

        <script type="text/javascript" src="cordova.js"></script>
        <script type="text/javascript" src="js/index.js"></script>
    </body>        
  </html>

Par avance merci pour votre aide car j'en ai besoin. Jérôme

31
demandé sur Manikandan C 2015-06-26 00:02:04

2 réponses

Cochez cette lien, il dit:

JavaScript en ligne ne sera pas exécuté. Cette restriction interdit les deux inline <script> blocs ou en ligne, les gestionnaires d'événements (e.g. button onclick="...").

pour éviter les problèmes de scripts entre sites comme ci-dessous spécifié

one.app#/home:1 Refused to execute inline event handler because it violates the following Content
Security Policy directive: "script-src 'self' 'nonce-d452460d-e219-a6e5-5709-c8af6ca82889'
chrome-extension: 'unsafe-inline' 'unsafe-eval' https://sfdc.azureedge.net 
*.na34.visual.force.com https://ssl.gstatic.com/accessibility/". Note that 'unsafe-inline'
is ignored if either a hash or nonce value is present in the source list.

event listener functions au lieu de onclick='myFun()".

<body onload="main();">
    <button onclick="clickHandler(this)">
        Click for awesomeness!
    </button>
</body>
<script>
    function clickHandler(element) {
        // On click Code
    }

    function main() {
        // Initialization work goes here.
    }
</script>

pour travailler avec un nouveau navigateur, vous devez écrire votre code avec une séparation nette entre le contenu et comportement.

<body>
  <button>Click for awesomeness!</button>
</body>
<script src="popup.js"></script>

<!-- popup.js -->
    document.addEventListener('DOMContentLoaded', function () {
      document.querySelector('button').addEventListener('click', clickHandler);
      main();
    });

    function clickHandler(element) {
        // On click Code
    }

    function main() {
        // Initialization work goes here.
    }
<!-- popup.js -->
46
répondu Martin Cisneros Capistrán 2017-11-09 14:39:21

Essayez d'ajouter img-src * pour le Contenu de la Politique de Sécurité de la balise:

<meta http-equiv="Content-Security-Policy"
         content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src *">
-1
répondu Shmulik Bardosh 2018-04-10 02:14:42