Я пытаюсь поместить изображение в корзину S3, используя предварительно назначенный URL-адрес.
Я использую SAM для локального размещения сайта, и запрос PUT работает правильно. Однако при выполнении команды на моем prod-сервере я получаю ошибку «403 Forbidden».
Стоит отметить, что запрос OPTIONS работает нормально, получите код 200, а затем, когда PUT будет отправлен, получите код 403.
Вещи, которые я уже пробовал:
- Попытка установки типа контента в качестве типа моего изображения
- Попробовал поставить тип содержимого заголовка в
- Попытка установки COMS для разрешения GET, POST, PUT, DELETE
- Попытка установки доступа для моей лямбда-роли, чтобы иметь доступ администратора
Ничего не помогло, все равно получите "403 Запрещено"
JQuery Ajax:
$.ajax({
url: presignedUrl,
type: 'PUT',
data: image,
contentType: image.type,
processData: false,
success: function (response) {
// window.location = '/Prod/';
}
});
Создание заданного URL:
$cmd = $this->client->getCommand('PutObject', [
'Bucket' => env('AWS_BUCKET'),
'Key' => 'images/' . $request->input('image_name'),
]);
return $this->client->createPresignedRequest($cmd, '+20 minutes')->getUri();
Генерал из '403 Запрещено':
Request Method: PUT
Status Code: 403 Forbidden
Referrer Policy: no-referrer-when-downgrade
Заголовки ответа из '403 Forbidden':
Access-Control-Allow-Methods: GET, POST, PUT, HEAD
Access-Control-Allow-Origin: *
Connection: close
Content-Type: application/xml
Date: Wed, 15 May 2019 15:02:35 GMT
Server: AmazonS3
Transfer-Encoding: chunked
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-id-2: e5WZfJAQk24kl7kBoF+HU8+AOiR7ivTIcUZ71dZl0Ssged03RThlCRtku+AmhRRUwFe1p63cL4Q=
x-amz-request-id: 4767484BEBE4EC07
Запросить заголовки у '403 Forbidden':
Accept: */*
Content-Type: image/jpeg
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36
Локально выставленный запрос работает корректно и не содержит ошибок.