Политика безопасности контента 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 ответ
Решение
Ваша проблема в попытке использовать JSONP, который не нужен.
Вы хотите получать данные, а не скрипт для выполнения. JSONP - это хитрость, позволяющая обойти невозможность создания междоменных запросов, если удаленный сервер не разрешает этого; однако расширения Chrome имеют разрешения хоста, которые обходят междоменные ограничения.
Добавьте междоменные разрешения для используемого вами API.
"permissions": [ "activeTab", "https://ajax.googleapis.com/*", "https://api.twitch.tv/*" ]
Вызовите API без параметра обратного вызова:
$.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer", function(c) { if (c.stream == null) { /*...*/ } } );