为什么我在尝试渲染图像时在 firebug 中收到 403 错误?
该应用程序正在使用 MEAN Stack 制作。
这是艺术家服务的方法:
getArtist(token, id: string){
let headers = new Headers({
'Content-Type' : 'application/json',
'Authorization': token
});
let options = new RequestOptions({headers: headers});
return this._http.get(this.url + 'getOneArtist/'+ id, options).map(res => res.json());
}
我想把它对应的图像。事实是,到目前为止,原则上一切都很顺利,因为我在后端配置了标头。CORS。
这是HTML:
<div class="image-for-edit" *ngIf="artist.image && artist.image != 'null'">
<img src="{{url + 'getImageArtist/' + artist.image}}">
</div>
最后,控制器方法:
getArtist(){
this._route.params.forEach((params: Params) => {
let id = params['id'];
this._artistService.getArtist(this.token, id).subscribe(
response => {
if(!response.artist) {
this._router.navigate(['/']);
}else{
this.artist = response.artist;
}
},
error => {
var errorMessage = <any>error;
if(errorMessage != null) {
console.log(error);
}
}
);
});
}
任何线索为什么我想放置图像的所有地方都没有问题,而在这里我有?
我回答了同样的问题,因为我找到了解决方案。但是不知道是不是为了暂时保存bug的补丁,还是做对了。
问题是我使用中间件进行用户授权。在后端,我在路由文件中有这个:
那是定义的路线之一。可以想象得到每个注册艺术家对应的图片文件的路径。
那么问题来了,你可以在路由中包含中间件,并且我已经插入了用户授权中间件,在我看来,这意味着我无法获取该文件。
一旦该位被擦除,一切正常并且可以查看图像。
我想这样,如果有人读过这篇文章并认为我不正确或可以执行另一个程序,他们会对此发表评论。我不知道我是否完全正确,尽管我看到它有效,并且我不想严重影响其他用户。