angular - Angular:如何在 innerHTML 中加载安全图像
问题描述
innerHtml
在元素内加载安全图像(可通过授权标头访问的图像)的最佳方式是什么。
我知道,可以使用如下管道加载受保护的图像:
<img [src]="'http://secured/image/url' | authImage | async"/>
# or
<img src="{{ 'http://secured/image/url' | authImage | async}}"/>
export class AuthImagePipe implements PipeTransform {
constructor(private http: HttpClient) {
}
async transform(src: string): Promise<string> {
const headers = new HttpHeaders({'Authorization': `Bearer token`});
try {
const imageBlob = await this.http.get(src, {headers, responseType: 'blob'}).toPromise();
const reader = new FileReader();
return new Promise((resolve, reject) => {
reader.onloadend = () => resolve(reader.result as string);
reader.readAsDataURL(imageBlob);
});
} catch {
return 'fallback.png';
}
}
}
但是,不知道如何将此逻辑应用于 innerHtml 内容中的所有图像。请注意,innerHtml 的内容是动态的,可能会根据用户输入而改变。
解决方案
推荐阅读
- javascript - Bootstrap 4标签:获取点击标签的索引号?
- python - 如何生成包含特定条目的 Kaggle 提交 CSV 文件?
- excel-formula - 忽略空白的嵌套 IF 条件
- spring - 春季云流错误通道不起作用
- corda - 尝试使用 RPC 连接 Corda 节点时出错
- mysql - MySQL:使用带有 IN 的函数输出
- c# - Asp.Net httpcontext.current.request 适用于运行 iis7 的虚拟 windows server 2012 但不适用于 windows server 2016 iis10
- objective-c - OCMock 通过键值观察给出错误
- audiokit - AudioKit 的 FFTTap 在重新启动时在物理设备上给出零
- vue.js - Vue js - 如何调试空窗口路由器?