2016-06-28 3 views
12

어떤 이유로 내 이미지에 'unsafe:'이 붙어있어 이미지가 렌더링되지 않습니다.Ionic 2 + Angular 2 : 'unsafe :'가 붙은 이미지가 표시되기 때문에 괜찮습니다.

Q) 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까?이 각도 2는 허용 목록 또는 이온 2와 이상하지 않습니까?

<p><img src="unsafe:data:image/jpeg;base64,/9..... 
<p><img src="data:image/jpeg;base64,/9..... 

(여기 참조), 두 번째 이미지는 이온 2에서 렌더링 plunkr here

는 먼저 내가 수동으로 괜찮아요 보여 접두사를 제거 참조 이미지와 아무 문제가 없습니다.

클래스 :

import {DomSanitizationService} from '@angular/platform-browser'; 

constructor(private _DomSanitizationService: DomSanitizationService) {} 

템플릿 :

<img [src]="_DomSanitizationService.bypassSecurityTrustUrl(imgSrcProperty)"/> 

imgSrcProperty가 어디

+1

각도와 이오니아를 사용하지 않고 'index.html'에 직접 추가하면 Angular2 또는 ionic없이 동일합니다. 각도 및 이오니아 http://plnkr.co/edit/oZilVHewCeFAaIF6skMT?p=preview –

+0

안녕하세요. 내 질문에 일어나는. plunkr은 단지 상황에 대한 것일뿐입니다. – Dave

+0

나는 네가 나를 분명히 이해하고 있다고 생각하지 않는다. 물론, 둘 다 제거하면 페이지는 동일하지만, 제가 말한 것은 Angular 2 + Ionic 2를 사용할 때, 그 앞에 붙어있는 imageBase64를 출력한다는 것입니다. 그래서 그들은 관련되어 있습니다. – Dave

답변

29

이 문제가 발생하는 누군가를 위해, 나는이 다음 사용하여 '해결'한 오류가있는 이미지 base64가 인코딩되었습니다.

나는 아직도 버그라고 생각합니다!

+1

당신은 아름다운 사람입니다. 잘 했어. – Aarmora

+13

이후 'DomSanitizer'로 이름이 바뀌 었습니다. 이제 Angular 2.1.0에서 문제가 발생했습니다. –

+0

이것은 태그를 통해 설정 될 수있는 전체 CSP (Content Security Policy)를 우회한다는 점에 유의해야합니다. – Dalie

2

추가 답변을 추가하고 싶습니다. 따라서 일부 사용자는 디버그하지 않아도됩니다.

또한 iOS (WKWebView)에서 Ionic + Angular와 함께이 문제를 발견했으며 Base64 문자열에 줄 바꿈이 포함되면 Base64 데이터 URL도 "안전하지 않은"것으로 간주됩니다. MS Windows 스타일 CRLF 또는 LF.

우리는 base64 문자열 (외부 인터페이스가 "pretty printing"이었습니다)에서 그 문제가되는 문자를 제거하여 궁극적으로 문제를 해결했습니다.

@Dave에서 언급 한 바이 패스를 적용하기 전에 문자열을 확인합니다.