2012-03-27 2 views
4

Я использую прямые загрузки POST на основе браузера с Amazon S3 некоторое время, и совсем недавно хотел начать публикацию через HTTPS. Обычные сообщения HTTP работают нормально. Однако, когда я отправляю ту же форму в https://s3.amazonaws.com/, я получаю «405 метод не разрешен».Как вы загружаете файлы непосредственно на S3 через SSL?

Включены ли на основе браузера прямые загрузки POST POST, не поддерживающие HTTPS? Если они это сделают, как я могу это сделать, не получив ошибку 405?

Спасибо!

ответ

7

Это может быть проблема с вашим действием HTML FORM.

The action specifies the URL that processes the request, which must be set to the URL of the 
bucket. For example, if the name of your bucket is "johnsmith", the URL 
is "http://johnsmith.s3.amazonaws.com/". 

Пожалуйста, проверьте эту документацию ссылку AMAZON S3 подробнее: http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html#HTTPPOSTFormDeclaration

Существует также еще один пост на этом. Amazon S3 - HTTPS/SSL - Is it possible?

UPDATE: Я был в состоянии загрузить объекты в S3 ведро над SSL, используя этот HTML & Policy.Check форма действия.

Политика:

{ 
    "expiration": "2012-06-04T12:00:00.000Z", 
    "conditions": [ 
    {"bucket": "<YourBucketName>" }, 
    {"acl": "public-read" }, 
    ["eq", "$key", "testImage.jpg"], 
    ["starts-with", "$Content-Type", "image/jpeg"], 
    ] 
} 

HTML:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
<form action="https://s3.amazonaws.com/<YourBucketName>/" method="post" enctype="multipart/form-data"> 
<input type="text" name="key" value="testImage.jpg" /> 
<input type="text" name="acl" value="public-read" /> 
<input type="text" name="content-type" value="image/jpeg" /> 
<input type="hidden" name="AWSAccessKeyId" value="<YOUR ACCESS KEY>" /> 
<input type="hidden" name="policy" value="<YOUR GENERATED POLICY>" /> 
<input type="hidden" name="signature" value="<YOUR GENERATED SIGNATURE>" /> 
<input name="file" type="file" /> 
<input name="submit" value="Upload" type="submit" /> 
</form> 
</body> 
</html> 

Вы должны знать, как генерировать кодированный политику и подпись.

+0

Если вы укажете URL-адрес HTTPS с пользовательским ведром, он вызовет ошибку SSL, так что это не вариант, к сожалению. –

+1

Мне удалось использовать HTTPS-url с пользовательским ведром. например https://s3.amazonaws.com//. Проверьте обновление моего ответа. – shashankaholic

+0

Спасибо! Мне нужно проверить источник библиотеки, которую я использую, чтобы увидеть, как она генерирует подпись. –

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