POST-запрос S3 к S3 с ответом 405

У меня есть следующая конфигурация CORS для S3, чтобы использовать одну из моих корзин в качестве хостинга статического веб-сайта:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
    </CORSRule>
</CORSConfiguration>

Затем у меня есть следующие правила перенаправления редактирования:

<RoutingRules>
    <RoutingRule>
    <Condition>
        <KeyPrefixEquals>abc</KeyPrefixEquals>
    </Condition>
    <Redirect>
        <HostName>myec2instance.com</HostName>
    </Redirect>
</RoutingRule>

What I want to do is when S3 receives a POST to /abc redirects the request and request body to my ec2 instance. The redirection rule is working properly (I was able to test this by switching POST to a GET request) but for any reason S3 is returning HTTPResponse 405 when the request is a POST. Any ideas why?


person user1126167    schedule 18.02.2015    source источник
comment
Ссылки, которые я могу найти на эту ошибку после перенаправления, похоже, указывают на то, что это происходит, если вы перенаправляете либо в папку, а не в файл, либо в папку, в которой нет набора документов по умолчанию. Это что-то из этого?   -  person    schedule 19.02.2015
comment
Привет, @monkeymatrix, спасибо за ответ! Моя проблема не в операции перенаправления (по крайней мере, я так думаю). Проблема для меня в том, что S3 как хост статического веб-сайта не позволяет мне отправлять HTTP POST из javascript, который у меня есть на веб-странице. Я пытаюсь создать целевую страницу, на которой пользователи могут оставить свой контакт, затем веб-страница отправляет свой контакт на S3 с помощью POST и, наконец, S3 перенаправляет на экземпляр ec2, который сохраняет отправленные данные json.   -  person user1126167    schedule 19.02.2015


Ответы (2)


Это не связано с CORS — это сам S3. Конечные точки веб-сайта S3 оборудованы только для GET и HEAD. Все остальное должно быть запрещено до проверки правил перенаправления.

Конечная точка веб-сайта

Поддерживает только запросы GET и HEAD к объектам.

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html

person Michael - sqlbot    schedule 19.02.2015
comment
Значит ли это, что вы не можете использовать хостинг веб-сайтов S3 для пересылки запросов POST? - person Jake; 17.03.2015
comment
@Jake - правильно ... хотя я не уверен, почему вы хотите перенаправить (перенаправить?) POST, потому что это означало бы повторную отправку тела запроса в новое место, затраты времени и пропускной способности на стороне браузера. Вы можете создать здесь новый вопрос, описывая свой вариант использования и проблему, которую вы пытаетесь решить. POST запросы к конечным точкам веб-сайта S3, даже при наличии соответствующего правила перенаправления, выполняются с 405 Method Not Allowed. - person Michael - sqlbot; 17.03.2015
comment
Спасибо, Майкл. Я использую бэкэнд REST API из внешнего приложения, размещенного на S3. Я понял, что правильный способ сделать это — обратиться к бэкенду напрямую с помощью CORS, без необходимости перенаправления. - person Jake; 18.03.2015
comment
Вы можете использовать шлюз API, Lambda. - person zuyao88; 27.12.2018

Если вы хотите использовать POST запрос к S3, вам нужно использовать корневой объект в вашем браузере, создав POSTPolicy для получения S3 authentication

вы можете ссылаться на загрузку через браузер с использованием HTTP POST

person Sasra S    schedule 05.12.2019