Это работало до недавнего времени, я не уверен, что изменилось.Я генерирую presignedUrl с помощью S3 SDK и загружаю файл в корзину, используя его.Файл на самом деле загружается, и ответ возвращает statusCode 200, но странно, что нет тела ответа.
Я не могу понять, пропускаю ли я какой-то заголовок, или они ошибочны.Content-length
в заголовках ответа беспокоит меня.
Любая помощь будет принята с благодарностью!
Примечание: я скрыл значения, если они полезны, я могу высмеять их обратно в
Общие сведения
Request URL: https://some-bucket.s3.ap-southeast-2.amazonaws.com/some/path/file/picture?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAXXXap-southeast-2%2Fs3%2Faws4_request&X-Amz-Date=xxx&X-Amz-Expires=300&X-Amz-Security-Token=xxx&X-Amz-Signature=xxx&X-Amz-SignedHeaders=host%3Bx-amz-acl&x-amz-acl=public-read
Request Method: PUT
Status Code: 200 OK
Remote Address: 1.2.3.4:443
Referrer Policy: no-referrer-when-downgrade
Заголовки запроса
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: no-cache
Connection: keep-alive
Content-Length: 31897
Content-Type: image/jpeg
Host: some-bucket.s3.ap-southeast-2.amazonaws.com
Origin: http://localhost:5000
Pragma: no-cache
Referer: http://localhost:5000/some/page
User-Agent: Mozilla/5.0 xxx
Заголовки ответа
Access-Control-Allow-Methods: GET, PUT, POST, HEAD
Access-Control-Allow-Origin: *
Content-Length: 0
Date: Thu, 1 May 2017 01:00:00 GMT
ETag: "xxx"
Server: AmazonS3
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-id-2: xxx
x-amz-request-id: xxx
Параметры строки запроса
X-Amz-Algorithm: AWS4-HMAC-SHA256
X-Amz-Credential: ASIAXXXap-southeast-2/s3/aws4_request
X-Amz-Date: XXX
X-Amz-Expires: 300
X-Amz-Security-Token: XXX
X-Amz-Signature: XXX
X-Amz-SignedHeaders: host;x-amz-acl
x-amz-acl: public-read
Предписывающий сервис (NodeJS, Lambda)
...
const params = {
Bucket: 'some-bucket',
Key: 'some/path/file/picture',
Expires: 60 * 5,
ACL: 'public-read'
};
s3.getSignedUrl('putObject', params, (err, url) => {
...
callback(null, new Response(200, {url});
});
...
Сервис S3 (TS, угловой)
public putObject(presignedUrl: string, file: File): Observable<any> {
return this.http.put<any>(presignedUrl, file);
}
Компонент
this.s3Service.putObject(presignedUrl, file)
.subscribe(
(response) => {
// it gets here as expected
// but response is null!
},
() => {}
);