Sejak meningkatkan ke kandidat rilis Angular 2 terbaru, img
tag saya :
<img class='photo-img' [hidden]="!showPhoto1" src='{{theMediaItem.photoURL1}}'>
melakukan kesalahan browser:
PENGECUALIAN ASLI: Kesalahan: nilai tidak aman digunakan dalam konteks URL sumber daya
Nilai urlnya adalah:
http://veeu-images.s3.amazonaws.com/media/userphotos/116_1464645173408_cdv_photo_007.jpg
EDIT:
Saya telah mencoba saran yang dibuat dalam solusi lain bahwa pertanyaan ini seharusnya merupakan duplikat dari tetapi saya mendapatkan kesalahan yang sama.
Saya telah menambahkan kode berikut ke pengontrol:
import {DomSanitizationService} from '@angular/platform-browser';
@Component({
templateUrl: 'build/pages/veeu/veeu.html'
})
export class VeeUPage {
static get parameters() {
return [[NavController], [App], [MenuController], [DomSanitizationService]];
}
constructor(nav, app, menu, sanitizer) {
this.app = app;
this.nav = nav;
this.menu = menu;
this.sanitizer = sanitizer;
this.theMediaItem.photoURL1 = this.sanitizer.bypassSecurityTrustUrl(this.mediaItems[1].url);
}
Saya masih mendapatkan pesan kesalahan yang sama.
EDIT2:
Saya juga telah mengubah html menjadi:
<img class='photo-img' [hidden]="!showPhoto1" [src]='theMediaItem.photoURL1'>
Saya masih mendapatkan pesan kesalahan yang sama
[src]='theMediaItem.photoURL1'
Jawaban:
Saya menggunakan rc.4 dan metode ini berfungsi untuk ES2015 (ES6):
Di HTML:
Menggunakan fungsi akan memastikan bahwa nilainya tidak berubah setelah Anda membersihkannya. Ketahuilah juga bahwa fungsi sanitasi yang Anda gunakan bergantung pada konteksnya.
Untuk gambar,
bypassSecurityTrustUrl
akan berfungsi tetapi untuk kegunaan lain Anda perlu merujuk ke dokumentasi :https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html
sumber
import {DomSanitizer} from '@angular/platform-browser';
2.4.x
2.0.0-rc3
DomSanitizationService
this.sanitizer.bypassSecurityTrustResourceUrl(url)
untuk videoPipa
Template
Itu dia!
Catatan: Anda seharusnya tidak membutuhkannya tetapi ini adalah penggunaan komponen pipasumber
Cara paling elegan untuk memperbaikinya: gunakan pipa. Ini contoh (blog saya). Jadi Anda kemudian dapat menggunakan
url | safe
pipa untuk melewati keamanan.Lihat dokumentasi di npm untuk detailnya: https://www.npmjs.com/package/safe-pipe
sumber
Gunakan Pipa Aman untuk memperbaikinya.
Buat pipa yang aman jika Anda belum punya.
ng gc pipa aman
tambahkan pipa Aman di app.module.ts
deklarasi: [SafePipe]
nyatakan pipa aman di ts Anda
Impor Pembersih Dom dan Pipa Aman untuk mengakses url dengan aman
- Tambahkan aman dengan url src
sumber
Anda bisa mengekspos pembersih ke tampilan, atau mengekspos metode yang meneruskan panggilan ke bypassSecurityTrustUrl
sumber
Angular memperlakukan semua nilai sebagai tidak tepercaya secara default. Saat nilai dimasukkan ke dalam DOM dari template, melalui properti, atribut, gaya, pengikatan kelas, atau interpolasi, Angular membersihkan dan melepaskan nilai yang tidak tepercaya.
Jadi jika Anda memanipulasi DOM secara langsung dan memasukkan kontennya, Anda perlu membersihkannya jika tidak, Angular akan mengalami kesalahan.
Saya telah membuat pipa SanitizeUrlPipe untuk ini
dan inilah cara Anda dapat menggunakan
Jika Anda ingin menambahkan HTML, SanitizeHtmlPipe dapat membantu
Baca lebih lanjut tentang keamanan sudut di sini .
sumber
sumber
sumber
Anda dapat mengatur gambar sebagai gambar latar belakang untuk menghindari
unsafe url
kesalahan:CSS:
sumber