当我通过DomSanitizer传递远程URL时,http://localhost:4200 被前缀为URL前缀,结果我得到了404。
GET http://localhost:4200/.cs.uic.edu/~i101/SoundFiles/Fanfare60.wav 404 (Not Found)
原始网址:https://www2.cs.uic.edu/~i101/SoundFiles/Fanfare60.wav
我的代码:
constructor(private sanitizer: DomSanitizer) {}
public getSantizeUrl(url: string) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
还有我的模板:
<audio #player style="width: 100%" controls="controls" [src]="getSantizeUrl(chunk.value)" >
</audio>
我错过了什么吗?为什么是前缀? FWIW bypassSecurityTrustUrl(url( 具有相同的效果。
谢谢
可能是 getSantizeURL 的响应迫使重定向来自 src。 尝试将 url 保存在变量中,例如:
import { Component } from '@angular/core';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
@Component({
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent
{
public audioUrl: SafeResourceUrl;
constructor(private sanitizer: DomSanitizer) {}
getSantizeUrl(url: string) {
this.audioUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
在模板中:
<audio #player style="width: 100%" controls="controls" [src]="audioUrl" >
</audio>
可能你应该在onInit中调用getSantizeUrl,如果你已经有网址来santize或从事件中与chunk.value的变化相关的
感谢您的输入,看来我有一些用户错误。
URL甚至在到达消毒剂之前就被破坏了:/