Я разрабатываю приложение AngularJS и пытаюсь сделать из него расширение Chrome.AngularJS html bind and Chome application CSP
Приложение получает каналы с удаленного сервера в формате JSON, а одним из значений является HTML, связанный с помощью ngSanitize. Все в порядке, пока вы не попытаетесь связать его и показать его содержимое как часть приложения Chrome.
Я знаю, что «проблема» связана с CSP, которая существует, и нет никакого способа обойти ее (без песочницы и веб-просмотра, что, я думаю, не соответствует).
Выполнение XHR-запросов для удаленных ресурсов и их маркировка как blob - это то, что используется и предлагается Google, но в этом случае Angular выполняет весь анализ HTML и загружает его на веб-странице.
Мой вопрос в том, есть ли у кого-то подобная проблема и/или как это можно решить?
Спасибо!
РЕДАКТИРОВАТЬ 1. У HTML могут быть, например, теги img. Таким образом, он не показывает ничего, кроме текста.
EDIT 2. Я придумал следующую идею, которая могла бы выполнить эту работу.
- Получить HTML текст
- Добавить директиву после проблемного тега (IMG например)
- Пусть директива получить URL из Src атрибута и сделать запрос XHR.
- После получения отметки в виде BLOB и подайте его в src атрибут.
У меня не так много опыта, поэтому я не вижу никаких подводных камней с этой идеей.
Did вы пытались использовать 'ng-bind-html' вместе с' $ sce.trustAsHtml() '? – maurycy
@maurycy Nope. Я думаю, что SCE здесь не проблема, потому что эта вещь работает как веб-приложение. Chrome CSP блокирует каждый запрос на удаленные ресурсы, если это не AJAX-запрос. – ikac