0

Я пытаюсь сделать расширение Chrome, и у меня проблемы с политикой безопасности контента.Политика и разрешения безопасности содержимого расширенного содержимого Chrome

Я создаю popup.html с вызовом json в popup.js, вызываемом в заголовке. Я также добавляю еще один .js-файл на удаленный сервер, я не могу включить его, так как это api-машина для внешней службы.

Я пробовал все с помощью manifest.json.

"permissions": [ //"optional_permissions": [ 
     "http://*.myjsonserver.com/", 
     "http://*.twilio.com/*", 
     "https://*.twilio.com/*" 
     //"http://*/*", 
     //"https://*/*" 
    ], 

Я попробовал это.

"manifest_version": 2, 
    "content_security_policy": "connect-src 'self' http://myjsonserver.com; object-src 'self'", //connect-src 
    "content_security_policy": "script-src 'self' https://static.twilio.com; object-src 'self'" 

Или я должен добавить javascript именно так?

"content_scripts": [ 
    { 
     "matches": ["http://static.twilio.com/*"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ], 

Я получаю эту ошибку на инспекторе Google Chrome.

Refused to load the script 'http://myjsonserver.com/get_token_cb.php?callback=jQuery210007401883858256042_144745747' because it violates the following Content Security Policy directive: "script-src 'self' https://static.twilio.com". 
--------------- 
chrome-extension://static.twilio.com/libs/twiliojs/refs/6359b40/twilio.min.js Failed to load resource: net::ERR_FAILED 

Failed to load resource: net::ERR_FAILED chrome-extension://static.twilio.com/libs/twiliojs/refs/6359b40/twilio.min.js 

но ничего не работает, myjsonserver.com это не на сервере https, а на моем собственном сервере. URL twilio.com должен получить доступ к twilio api из javascript.

Это только для тестирования, потому что позже он будет на background.js

Я судимый все это, но я потерял и я понятия не имею.

+0

Удалить СНТ, вам нужно ' "HTTP: //*.myjsonserver.com/"' разрешение только. Не загружайте удаленные сценарии, используйте json и локальные скрипты для его анализа. Не делайте XHR из сценариев контента (не уверен, где вы включаете 'twilio.min.js'): фон и всплывающее окно должны работать только отлично. – minj

+0

Я должен загрузить удаленные js, из twilio у меня нет другого выбора. Я видел в коде Twilio, что он вызывает другой js-файл. – Gino

+0

Я также просто обнаружил, что я не могу выполнить jQuery ajax-запрос на удаленном сервере, но я могу сделать чистый javascript 'xhr = new XMLHttpRequest();' В чем разница, почему я не могу выполнить вызов ajax с помощью jQuery, но я могу с XMLHttpRequest? – Gino

ответ

1

Здесь много можно сказать: я могу сказать, что Google рекомендует вам использовать JS из расширения, а не из Интернета, если это возможно (так что если вам нужно jQuery, вы будете связывать его с вашим расширением). Что касается конкретной ошибки, о которой вы сообщали, вступает в силу только второй content_security_policy. Вы можете видеть в their documents, что они указывают только один из этих атрибутов в манифесте.

Чтобы решить эту ошибку вы столкнулись, я полагаю, вы хотите:

"content_security_policy": "script-src 'self' https://myjsonserver.com https://static.twilio.com; object-src 'self'" 
+1

['http:' схемы не могут быть включены в белый список.] (Https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-remote-script) Вместо этого используйте 'https:' вместо белого списка удаленных скриптов (или, желательно, свяжите его с расширение). –

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