防止 httpclient 在调用预签名 url 时添加服务器 url
Prevent httpclient from adding server url when calling presigned url
我有一个 JHipster 生成的 angular 前端。与应用程序相关的所有媒体都存储在 AWS S3 上。为了获取或上传媒体,客户端向后端请求预签名 url。之后,它应该使用预签名 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...
请求
您要导航到的 URL 以 "
开头(在 URL 中显示为 %22
),这会导致请求附加 URL 到现有的 URL 而不是直接请求它。如果 URL 以 http://
、https://
或 //
开头,它将正常工作。
我有一个 JHipster 生成的 angular 前端。与应用程序相关的所有媒体都存储在 AWS S3 上。为了获取或上传媒体,客户端向后端请求预签名 url。之后,它应该使用预签名 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...
您要导航到的 URL 以 "
开头(在 URL 中显示为 %22
),这会导致请求附加 URL 到现有的 URL 而不是直接请求它。如果 URL 以 http://
、https://
或 //
开头,它将正常工作。