我有一个JHipster生成的角度前端。与该应用程序相关的所有媒体都存储在AWS S3上。要获取或上传媒体,客户端会要求后端提供预先签名的网址。然后,它应该使用该预签名的URL来检索媒体。
问题是,http请求受到某种方式的操纵,总是将网关主机域添加到预签名的url之前。
应将媒体上传到s3的功能:
private save(presignedUri: string, file: File): Observable<HttpEvent<any>> {
const formData: FormData = new FormData();
formData.append('file', file);
const headers = new HttpHeaders()
.set('Content-Type', `${file.type}; charset=utf-8`);
const req = new HttpRequest('POST', presignedUri, formData, {
reportProgress: true,
responseType: 'text',
headers
});
return this.http.request(req);
}
我希望它只使用给定的预签名url,而是尝试使用http://localhost:9001/%22https://s3.eu-central-1.amazonaws.com/19fa8b4d-av…gnature=6c96de...
答案 0 :(得分:0)
您导航到的URL以"
(在URL中显示为%22
)开头,这导致请求将URL附加到现有URL上,而不是直接请求。如果网址以http://
,https://
或//
开头,它将正常工作。