Динамическая установка атрибута src iframe в AngularJS
При работе с iframe в AngularJS часто необходимо динамически устанавливать атрибут src на основе переменная. Однако попытка сделать это с помощью стандартного присваивания может привести к отображению пустого атрибута src в iframe.
Понимание проблемы и решения
Проблема возникает при попытке чтобы установить атрибут src с ненадежным URL-адресом. AngularJS реализует меры безопасности для предотвращения потенциальных атак XSS (межсайтовый скриптинг). Чтобы смягчить это, необходимо использовать службу $sce (строгое контекстное экранирование) для «доверия» URL-адресу перед его назначением.
Метод TrustAsResourceUrl() службы $sce можно использовать для явной маркировки URL-адреса. URL-адрес является доверенным, что гарантирует его безопасное использование в шаблоне AngularJS.
Реализация кода
В предоставленный файл контроллеров/app.js добавьте $sce service в AppCtrl и измените функцию setProject() следующим образом:
$scope.setProject = function (id) {
$scope.currentProject = $scope.projects[id];
$scope.currentProjectUrl = $sce.trustAsResourceUrl($scope.currentProject.url);
}
В шаблоне HTML обновите атрибут src iframe, чтобы он ссылался на переменную currentProjectUrl:
Объяснение
При вызове TrustAsResourceUrl() URL-адрес помечается как доверенный и его можно безопасно использовать в шаблоне AngularJS. Директива ng-src затем установит атрибут src iframe с доверенным URL-адресом.
Дополнительные примечания
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3