0

Я прошу прощения за мой английский,Content Security Policy getJSON

У меня есть этот следующий код в моем HTML:

<script type="text/javascript" src="plugin.js"></script> 

В моих JS:

$(document).ready(function() { 
     $.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer"+"?callback=?",function(c) { 

     if (c.stream == null) { 
      $("p").text("Stream offline, n'hésitez pas à me rejoindre sur les réseaux sociaux afficher ci-dessous."); 

     } else { 

      $("p").text("Stream online, rejoins moi sur Domingo.tv en cliquant sur le lien ci dessous"); 

     } 
    }); 
}); 

В моей декларации:

{ 
    "manifest_version": 2, 

    "name": "Getting started example", 
    "description": "This extension shows a Google Image search result for the current page", 
    "version": "1.0", 
    "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 

    "permissions": [ 
    "activeTab", 
    "https://ajax.googleapis.com/", 
    ] 
} 

И я получаю, что:

Refused to load the script 'https://api.twitch.tv/kraken/streams/NameOfStreamer?callback=jQuery11120590793181443587_1429560015317&_=1429560015318' because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:". 

Я хотел бы знать, как я могу решить эту проблему.

+1

вы делаете запрос Ajax междоменное. вам нужно либо jsonp, либо соответствующие заголовки CORS, чтобы это разрешить. –

+0

Неверный дубликат. Проблема здесь IS jsonp. Его нужно отбросить. – Xan

ответ

1

Ваша проблема заключается в попытке использовать JSONP, который не нужен.

Вы хотите получать данные, а не сценарий для выполнения. JSONP - это трюк, чтобы обойти невозможность сделать междоменные запросы, если удаленный сервер этого не позволяет; однако расширения Chrome имеют host permissions that bypass cross-domain restrictions.

  1. Добавить междоменные разрешения для API, который вы используете.

    "permissions": [ 
        "activeTab", 
        "https://ajax.googleapis.com/*", 
        "https://api.twitch.tv/*" 
        ] 
    
  2. Вызвать API без параметр обратного вызова:

    $.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer", 
        function(c) { 
        if (c.stream == null) { 
         /*...*/ 
        } 
        } 
    ); 
    
+0

Итак, я пробую этот код, и у меня нет такой же ошибки: XMLHttpRequest не может загрузить https://api.twitch.tv/kraken/streams/NameOfStreamer. В запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin». Следовательно, хром-расширение происхождения: // ennobinmkifbonghaaoekogblngkcdja 'не допускается. –

+0

В вашем JS-файле внутри функции Document.ready. Вам нужно заменить метод $ .getJSON кодом выше и обработать успех согласно вашему требованию. –

+0

Вы добавили разрешение? Вы перезагрузили расширение после этого? – Xan

Смежные вопросы