【发布时间】:2011-06-25 18:48:02
【问题描述】:
我想收集用户在浏览器中输入的数据并保存到 Amazon S3。这是我可以用 Javascript/Jquery 做的吗?
【问题讨论】:
-
感谢您的回答,但我将继续使用亚马逊网络服务来存储数据。现在这看起来是我最好的选择。干杯
标签: javascript jquery amazon-s3 amazon
我想收集用户在浏览器中输入的数据并保存到 Amazon S3。这是我可以用 Javascript/Jquery 做的吗?
【问题讨论】:
标签: javascript jquery amazon-s3 amazon
我知道这是一个老问题,但我遇到了同样的问题,并认为我找到了解决方案。 S3 有一个REST interface,您可以直接向其发布数据,而不会暴露您的 AWS 密钥。因此,您可以使用 Javascript 或 jQuery 向您的 S3 存储桶端点构建 AJAX POST 请求。您也可以在请求中指定访问策略,将上传访问权限限制为仅对某些存储桶和某些目录。
亚马逊使用您在请求中提供的 HMAC 签名来验证您的请求的真实性。签名是使用有关请求的详细信息和您的 AWS 密钥构建的,只有您和亚马逊知道,因此在没有有效签名的人的情况下无法发出欺诈性请求。
【讨论】:
是的,这是可能的,正如我已经在接受答案的 cmets 中指出的那样,在不损害安全性和凭据的情况下,这样做有合法和有用的用途。
您可以直接从浏览器将对象发布到 S3: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPOST.html
【讨论】:
坏主意:
1) 想想当人们发现您的 S3 凭据嵌入在您的 Javascript 代码中时,清空您的银行帐户会有多有趣。
2) javascript 将从您的服务器加载并尝试与亚马逊的服务器通信 - 这是禁止的,因为它是跨域通信。
你想在服务器上处理这样的事情。您可以轻松地创建一个 AJAX 接口来发送数据client browser -> your server -> amazon。这样一来,您的 S3 凭据就会存储在您的服务器上,而不会随意传输给使用您网站的每个人。
【讨论】:
也许看看 node.js,并通过以下方式尝试 aws-sdk 包:
npm install aws-sdk
我找到了关于如何将文件上传到 S3 的博客和文档:
【讨论】:
尝试通过客户端代码访问 S3 存在各种问题:
总而言之,目前对于客户端 JavaScript 没有可行的解决方案。如果您对服务器端 JavaScript 感兴趣,可以在 GitHub 上为 Node.js 提供一些 S3 类。
【讨论】: