2012-03-27 4 views
4

J'utilise depuis un certain temps des envois POST directs sur navigateur avec Amazon S3, et je voulais récemment commencer à publier via HTTPS. Les messages HTTP normaux fonctionnent très bien. Cependant, lorsque je poste le même formulaire à https://s3.amazonaws.com/, j'obtiens une "méthode 405 non autorisée".Comment télécharger des fichiers directement sur S3 via SSL?

Les téléchargements AWS POST directs par navigateur ne prennent-ils pas en charge le protocole HTTPS? S'ils le font, comment puis-je le faire sans obtenir une erreur 405?

Merci!

Répondre

7

Il pourrait y avoir un problème avec votre action 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/". 

S'il vous plaît vérifier ce lien de documentation S3 AMAZON pour plus de détails: http://docs.amazonwebservices.com/AmazonS3/latest/dev/HTTPPOSTForms.html#HTTPPOSTFormDeclaration

Il y a aussi un autre poste à ce sujet. Amazon S3 - HTTPS/SSL - Is it possible?

MISE À JOUR: j'ai pu télécharger des objets au seau S3 via SSL en utilisant ce code HTML & Policy.Check la forme d'action.

Politique:

{ 
    "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> 

Vous devez savoir comment générer des politiques et de la signature codée.

+0

Si vous spécifiez une URL HTTPS avec un compartiment personnalisé, une erreur SSL est générée, ce qui n'est malheureusement pas une option. –

+1

J'ai réussi avec l'URL HTTPS avec un seau personnalisé. comme https://s3.amazonaws.com//. Vérifiez la mise à jour sur ma réponse. – shashankaholic

+0

Merci! Je vais devoir vérifier la source de la bibliothèque que j'utilise pour voir comment elle génère la signature. –

Questions connexes