12

Tworzę rozszerzenie chrome dla czytnika Rss, ponieważ otrzymuję powyższy błąd. pomóżOdmówił wykonania skryptu wbudowanego, ponieważ narusza następującą dyrektywę Content Security Policy: "script-src 'self" "

manifest.json

{ 
    "name": "Tutorialzine Extension", 
     "manifest_version": 2, 
     "version": "1.1", 
     "description": "Making your first Google Chrome extension.", 
     "icons": { 
     "128": "icon_128.png" 
    }, 
     "web_accessible_resources": ["script.js", "https://query.yahooapis.com"], 
     "browser_action": { 
     "default_icon": "icon.png", 
      "default_popup": "tutorialzine.html" 
    }, 
     "permissions": ["tabs", "<all_urls", "http://localhost/", 
     "http://*/*", "https://*/*", "https://query.yahooapis.com"], 
     "content_security_policy": "script-src 'self'; 'https://query.yahooapis.com';unsafe-inline; object-src 'self'" 
} 

script.js

$(document).ready(function() { 

    var query = "SELECT * FROM feed WHERE url='http://feeds.feedburner.com/Tutorialzine' LIMIT 2"; 

    // Storing the seconds since the epoch in now: 
    var now = (new Date()).getTime()/1000; 

    // If there is no cache set in localStorage, or the cache is older than 1 hour: 
    if (!localStorage.cache || now - parseInt(localStorage.time) > 1 * 60 * 60) { 
     $.get("yahoo.js", function (msg) { 

      // msg.query.results.item is an array: 
      var items = msg.query.results.item; 
      var htmlString = ""; 

      for (var i = 0; i < items.length; i++) { 
       var tut = items[i]; 

       // Extracting the post ID from the permalink: 
       var id = tut.guid.content.match(/(\d+)$/)[0]; 

       // Looping and generating the markup of the tutorials: 

       htmlString += '<div class="tutorial">\ 
          <img src="http://tutorialzine.com/img/posts/' + id + '.jpg" />\ 
          <h2>' + tut.title + '</h2>\ 
          <p>' + tut.description + '</p>\ 
          <a href="' + tut.link + '" target="_blank">Read more</a>\ 
          </div>'; 
      } 

      // Setting the cache 
      localStorage.cache = htmlString; 
      localStorage.time = now; 

      // Updating the content div: 
      $('#content').html(htmlString); 
     }, 'json'); 
    } else { 
     // The cache is fresh, use it: 
     $('#content').html(localStorage.cache); 
    } 
} 

błędach w jquery.min.js:

Jquery.min.js zawiera skrypt inline co zrobić

parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= 
+1

można spróbować dokonać znaczników stackoverflow parser happy, tj. dodaj 4 spacje przed kodem (istnieje przycisk paska narzędzi). – mnagel

+3

Twój CSP ma kilka błędów. Powinno to brzmieć: '' script-src 'self' https://query.yahooapis.com; object-src 'self' "'. Również 'https: // query.yahooapis.com' nie jest konieczne w' web_accessible_resources'; ta tablica jest przeznaczona dla lokalnie hostowanych zasobów rozszerzeń, które chcesz udostępnić na zwykłych stronach internetowych, które nie są rozszerzane. – apsillers

+0

Nie należy oznaczać tagami google-chrome-app, ponieważ problemy CSP różnią się między aplikacjami i rozszerzeniami. –

Odpowiedz

5

Miałem też taki problem podczas pracy z API LinkedIn oAuth.

używałem LinkedIn API z następującymi ustawieniami dla Cordova

config.xml

<access origin="*" launch-external="yes"/> 
    <allow-navigation href="*" /> 

Meta Tag było

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> 

Script

<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script> 

Kiedy uruchomić aplikację na emulatorze jego dając

enter image description here

Naprawiono problem, aby dodać URI w meta tagu http://platform.linkedin.com jak

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval' http://platform.linkedin.com "> 
+1

Pamiętając o tym, że używanie niebezpiecznej ewaluny i niebezpiecznego inline jest zagrożeniem bezpieczeństwa. Możesz być ok po prostu używając "self" i "unsafe-inline". –

Powiązane problemy