Post 如何通过SSL将文件直接上载到S3?

Post 如何通过SSL将文件直接上载到S3?,post,ssl,amazon-s3,amazon-web-services,Post,Ssl,Amazon S3,Amazon Web Services,我在AmazonS3上使用基于浏览器的直接上传已经有一段时间了,最近我想开始通过HTTPS发布。正常的HTTP帖子工作得很好。然而,当我将相同的表单发布到时,我得到一个“405方法不允许” 基于浏览器的直接AWS上传不支持HTTPS吗?如果他们这样做了,我怎么能不出现405错误呢 谢谢 您的HTML表单操作可能有问题 The action specifies the URL that processes the request, which must be set to the URL of t

我在AmazonS3上使用基于浏览器的直接上传已经有一段时间了,最近我想开始通过HTTPS发布。正常的HTTP帖子工作得很好。然而,当我将相同的表单发布到时,我得到一个“405方法不允许”

基于浏览器的直接AWS上传不支持HTTPS吗?如果他们这样做了,我怎么能不出现405错误呢


谢谢

您的HTML表单操作可能有问题

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文档链接:

还有一篇关于这个的帖子。

更新: 我能够使用这个HTML和策略通过SSL将对象上传到S3 bucket。检查表单操作

政策:

{
  "expiration": "2012-06-04T12:00:00.000Z",
  "conditions": [
    {"bucket": "<YourBucketName>" },
    {"acl": "public-read" },
    ["eq", "$key", "testImage.jpg"],
    ["starts-with", "$Content-Type", "image/jpeg"],
  ]
}
{
“到期日”:“2012-06-04T12:00:00.000Z”,
“条件”:[
{“bucket”:“},
{“acl”:“公共读取”},
[“eq”、“$key”、“testImage.jpg”],
[“以“,“$Content-Type”,“image/jpeg”开头],
]
}
HTML:



您必须知道如何生成编码策略和签名。

如果您使用自定义bucket指定HTTPS url,它将抛出SSL错误,因此不幸的是,这不是一个选项。我成功使用自定义bucket的HTTPS url。喜欢查看我答案的更新。谢谢!我必须检查我正在使用的库的源,以查看它是如何生成签名的。我的库错误地将表单操作设置为just。我手动设置,效果很好。非常感谢。真正的问题是如何在没有ssl的情况下通过http实现这一点:-)
<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>