2016-05-25 11 views
24

Angular2'yi kullanarak, bağlantılara “güvensiz:” önekini eklemekten kaçınmak için bir ayar var. Ben Angular2 varsayılan olarak beyaz listede yer almayan protokol için bağlantılar ayarlamanız gerekir, ama bizim iç Uygulaması için gereklidir, bu yüzden sonuç geçersiz link: compileProvider.aHrefSanitizationWhitelist Açısal orada yaşlı olarakAngular2 ile bağlantı kurmak için “güvenli olmayan” öneki eklemek nasıl engellenir?

<a href="unsafe:Notes://MYSERVER/C1256D3B004057E8" .. 

, ama yapamıyorum Angular2 benzer bir şey bulmak.

+0

Sadece URI –

cevap

57

Kullanım DomSanitizer:

import {DomSanitizer} from '@angular/platform-browser'; 
... 
constructor(private sanitizer:DomSanitizer){} 
... 
let sanitizedUrl = this.sanitizer.bypassSecurityTrustUrl('Notes://MYSERVER/C1256D3B004057E8'); 

veya sterilize url dönmek için bir yöntem oluşturun: Şablonunuzdaki sonra

sanitize(url:string){ 
    return this.sanitizer.bypassSecurityTrustUrl(url); 
} 

ve:

<a [href]="sanitize('Notes://MYSERVER/C1256D3B004057E8')" ..

Demo Plunk

+0

Doğru ve eksiksiz talimatı önünde bir boşluk vardı. Mükemmel çalışıyor. Bunu nerede bulduğunuzu merak ediyorum .... :) – Veljac

+0

Şu anda [angular2 değişiklik kayıt sayfası] 'nın en üstündedir (https://github.com/angular/angular/blob/master/CHANGELOG.md). Stil dezenfektanı için yazılmıştır, ancak bir kez 'DomSanitizationService' dinlendikten sonra geri kalan sadece bir ctrl + uzay meselesidir: D – Abdulrahman

+0

Demoyu görmeden önce, bazı önemli ithalatı kaçırdığımı görmek çok zordu: 'açısal/platform-tarayıcı 've' köşeli/platform-tarayıcı-dinamik '. URL'lerimin önlerinde güvensiz: 'olmadan hiç bir yolu yoktu. – gustavohenke

21

Başka bir şekilde, güvenli olmayan URL'yi güvenli URL'ye değiştirmek için bir boru hizmeti oluşturabilir, böylece tüm bileşenlerde kodu yeniden yazmaya gerek yoktur. safe-url.pipe.ts adlı bir boru hizmeti oluşturun.

import { Pipe, PipeTransform } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser'; 

@Pipe({ 
    name: 'safeUrl' 
}) 
export class SafeUrlPipe implements PipeTransform { 
    constructor(private domSanitizer: DomSanitizer) {} 
    transform(url) { 
    return this.domSanitizer.bypassSecurityTrustResourceUrl(url); 
    } 
} 

Sonra görünümünde kullanın.

Örnek: <a href="'Notes://MYSERVER/C1256D3B004057E8' | safeUrl"></a>

NOT: En app.module.ts
import { SafeUrlPipe } from './shared/safe-url.pipe'; //make sure your safe-url.pipe.ts file path is matching. 

yılında Ve düğüm modülü bildirimleri bölümünde bu boru hizmeti enjekte etmeyi unutmayın.

@NgModule({ declarations: [SafeUrlPipe],...}); 
+0

Belki de, 'href'i köşeli parantez içine koymanız gerekir - [href], yani Açısal onu çalıştırabilir. –

İlgili konular