gpt4 book ai didi

angular - 如何使用 Angular Interceptors 和管道来获取需要基本身份验证 header 的图像的 http 请求

转载 作者:行者123 更新时间:2023-12-04 13:55:43 24 4
gpt4 key购买 nike

我试图通过将图像 src 的基本授权 header 传递给远程服务器来使用 Angular Interceptor 和管道来访问图像。我正在使用图像路径形式 .json 文件。它对我不起作用,因为我可能错过了一些东西。
当我从变量中获取图像路径时,我不确定如何在图像 src 标签中提供管道名称。
** src="image.imagePath |安全| 异步"**
任何人都可以帮我解决这个问题吗?主要目的是访问远程服务器上的图像,这需要 angular UI 中的基本授权。
auth.interceptor.ts

import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor} from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

request = request.clone(
{setHeaders: {'Authorization': 'Basic ' + btoa('username:password')}
});

console.log('processing request', request);
return next.handle(request);
}
}
secure.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Pipe({
name: 'secure'
})
export class SecurePipe implements PipeTransform {
constructor(private http: HttpClient, private sanitizer: DomSanitizer) { }

transform(url): Observable<SafeUrl> {
return this.http
.get(url, { responseType: 'blob' })
.pipe(map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val))));
}

}
应用程序组件.html
<p-orderList [value]="images" [listStyle]="{'height':'450px'}"  filterBy="tag"
filterPlaceholder="Filter by Tag" dragdrop="true">
<ng-template let-image pTemplate="item">
<div class="ui-helper-clearfix">
<img src="image.imagePath |secure| async" width="100">
<div style="font-size:20px;float:right;margin:15px 5px 0 0"><b>{{image.tag}}</b>-{{image.description}}.
<b>Year</b>-{{image.year}}</div>
</div>
</ng-template>
</p-orderList>
image-small.json
data": [
{
"imagePath": "https:someserver/wp2919299.jpg",
"tag": "tmp",
"description": "tag1, tag2, tag3",
"year": 2010
},
{
"imagePath": https:someserver/wp21123299.jpg",
"tag": "tmp2",
"description": "tag1, tag2",
"year": 2011
}
]
}
UI看起来像这样 enter image description here

最佳答案

管道是通过angular http客户端的请求,image src是html默认 Action ,不会使用angular http客户端,你必须通过http客户端加载图像数据

关于angular - 如何使用 Angular Interceptors 和管道来获取需要基本身份验证 header 的图像的 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62949750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com