6

В AWS CloudFront я установил это в: «Разрешенные методы HTTP» в области «Default Cache поведения Настройки»: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEВключение POST/PUT/DELETE на AWS CloudFront?

Мой CloudFront связан с ведром AWS S3. Поэтому я конфигурация AWS S3 CORS к:

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

Моей текущей политике AWS S3 ведра:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Sid": "AllowPublicRead", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::<bucket_name_here>/*" 
     } 
    ] 
} 

К сожалению, при запуске через curl я получаю:

$ curl -I -s -X POST -H "Origin: www.example.com" [hash_here].cloudfront.net 
HTTP/1.1 405 Method Not Allowed 
Content-Type: application/xml 
Transfer-Encoding: chunked 
Connection: keep-alive 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, HEAD 
Access-Control-Max-Age: 3000 
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method 
Allow: GET, DELETE, HEAD, PUT 
Date: Sun, 01 Mar 2015 14:12:26 GMT 
Server: AmazonS3 
X-Cache: Error from cloudfront 
Via: 1.1 5896eef8502a96757950c7d389f2015c.cloudfront.net (CloudFront) 
X-Amz-Cf-Id: uBK_gStEvSTWypvU8_YYjtfjC2UzdR3Ff_cDLitMaeUBNZ9AgrSkJg== 
+0

Из ответа, который вы опубликовали, похоже, что ошибка возвращается S3, а не CloudFront. Правильно ли вы настроили разрешения доступа к ведром, чтобы CloudFront мог отправлять POST там? –

+0

Я думаю, что сделал, все, что я сделал, изложено в моем вопросе. Если мне не хватает шага, тогда укажите, где и я буду принимать рабочее решение как ответ :) –

+0

Взгляните сюда: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private- содержание ограничивающего-доступ-к-s3.html # частно-контент-предоставление-разрешений-на-OAI. Он говорит о разрешении на чтение объекта, но я думаю, вам может потребоваться явно разрешить разрешение на запись для Origin Access Identity, которое вы используете для CloudFront –

ответ

1

Это может быть слишком поздно, чтобы ответить на этот вопрос. Одной из причин этой проблемы является Основной объект по умолчанию. Запрос POST должен быть указан в корневом URL-адресе ("/"). Проверьте настройки основного корневого объекта в облачном режиме. Его значение должно быть пусто и не index.html.

Смежные вопросы