0

Я разрабатываю приложение AngularJS и пытаюсь сделать из него расширение Chrome.AngularJS html bind and Chome application CSP

Приложение получает каналы с удаленного сервера в формате JSON, а одним из значений является HTML, связанный с помощью ngSanitize. Все в порядке, пока вы не попытаетесь связать его и показать его содержимое как часть приложения Chrome.

Я знаю, что «проблема» связана с CSP, которая существует, и нет никакого способа обойти ее (без песочницы и веб-просмотра, что, я думаю, не соответствует).

Выполнение XHR-запросов для удаленных ресурсов и их маркировка как blob - это то, что используется и предлагается Google, но в этом случае Angular выполняет весь анализ HTML и загружает его на веб-странице.

Мой вопрос в том, есть ли у кого-то подобная проблема и/или как это можно решить?

Спасибо!

РЕДАКТИРОВАТЬ 1. У HTML могут быть, например, теги img. Таким образом, он не показывает ничего, кроме текста.

EDIT 2. Я придумал следующую идею, которая могла бы выполнить эту работу.

  1. Получить HTML текст
  2. Добавить директиву после проблемного тега (IMG например)
  3. Пусть директива получить URL из Src атрибута и сделать запрос XHR.
  4. После получения отметки в виде BLOB и подайте его в src атрибут.

У меня не так много опыта, поэтому я не вижу никаких подводных камней с этой идеей.

+0

Did вы пытались использовать 'ng-bind-html' вместе с' $ sce.trustAsHtml() '? – maurycy

+0

@maurycy Nope. Я думаю, что SCE здесь не проблема, потому что эта вещь работает как веб-приложение. Chrome CSP блокирует каждый запрос на удаленные ресурсы, если это не AJAX-запрос. – ikac

ответ

1

Вы можете использовать фоновый скрипт в качестве прокси-сервера, он сможет выполнить xhr и вернуть ответ sendResponse.

Doc about extension communication

и не забудьте использовать это в шаблоне

<html data-ng-app="myApp" data-ng-csp> 

Это ng-csp позволит запускать угловые директивы

Надеются, что это ответит на ваш вопрос

+0

Приятно, но это означает, что мне нужно сделать запрос, который ставит меня в начале. То, как я это понимаю, это то, что он может помочь мне, только если я могу настроить приложение Chrome для пересылки всех запросов вне приложения на этот сценарий «прокси». – ikac