Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript或Jquery在S3上保存数据_Javascript_Jquery_Amazon S3_Amazon - Fatal编程技术网

使用Javascript或Jquery在S3上保存数据

使用Javascript或Jquery在S3上保存数据,javascript,jquery,amazon-s3,amazon,Javascript,Jquery,Amazon S3,Amazon,我想收集用户在浏览器中输入的数据并保存到AmazonS3。这是我可以用Javascript/Jquery做的吗 坏主意: 1) 想想当人们在Javascript代码中发现您的S3凭据时,清空您的银行帐户会有多有趣 2) javascript将从您的服务器加载,并尝试与Amazon的服务器通信——这是禁止的,因为这是跨域通信 您希望在服务器上处理类似的问题。您可以轻松地创建一个AJAX界面来发送数据客户端浏览器->服务器->亚马逊。这样,您的S3凭据将存储在服务器上,不会随意传输给使用您站点的所有

我想收集用户在浏览器中输入的数据并保存到AmazonS3。这是我可以用Javascript/Jquery做的吗

坏主意:

1) 想想当人们在Javascript代码中发现您的S3凭据时,清空您的银行帐户会有多有趣

2) javascript将从您的服务器加载,并尝试与Amazon的服务器通信——这是禁止的,因为这是跨域通信


您希望在服务器上处理类似的问题。您可以轻松地创建一个AJAX界面来发送数据
客户端浏览器->服务器->亚马逊
。这样,您的S3凭据将存储在服务器上,不会随意传输给使用您站点的所有人。

尝试通过客户端代码访问S3时会出现各种问题:

  • 没有办法保护您的凭据
  • 许多响应都是XML而不是JSON,而JavaScript中的XML解析引擎又重又慢
  • 验证请求需要HMAC-SHA1的JavaScript实现
  • 从JavaScript发出跨域请求而不通过代理路由存在问题

总而言之,目前对于客户端JavaScript没有可行的解决方案。如果您对服务器端JavaScript感兴趣,那么在GitHub for Node.js中会出现一些S3类。

我知道这是一个老问题,但我也遇到了同样的问题,我想我已经找到了解决方案。S3有一个可以直接将数据发布到其中,而无需公开AWS密钥。因此,您可以使用Javascript或jQuery向S3 bucket端点构造一个AJAX POST请求。您还可以在请求中指定访问策略,该策略将上载访问限制为仅对某些存储桶和特定目录进行


Amazon使用您在请求中提供的HMAC签名验证您请求的真实性。签名是使用有关请求和AWS密钥的详细信息构建的,只有您和Amazon知道这些信息,因此,如果没有有效签名的人,就不能提出欺诈性请求。

是的,这是可能的,正如我已经在接受答案的评论中指出的那样,在不损害安全性和凭证的情况下,这样做是合法和有用的

您可以直接从浏览器将对象发布到S3:

也许可以查看node.js,并通过以下方式尝试aws sdk包:

npm install aws-sdk
我找到了一些关于如何将文件上传到S3的博客和文档:


是否存在将信息传递给运行在S3或amazon服务上的javascript的方法?关于第2点,javascript是否可以从S3提供?javascript通常是一种客户端语言。它没有本机数据库功能,因此您无法使用它(例如)与MySQL通信。我相信它可以提供,但我对S3知之甚少,所以也不能肯定。是的,我特别问S3,不用担心,也许其他人可以插手。Cheers Down投票,因为它只是给出个人意见,而没有回答问题。一个有用的客户端javascript直接访问S3的例子是一个简单的js应用程序,其中每个用户都可以使用其凭据将图片上传到S3。它是安全的,因为它是他的凭据,它是安全的,因为他不将凭据提供给任何其他人。投票被否决,因为解决方案客户端浏览器>服务器>亚马逊不是问题所寻求的。。。这样,服务器端(可能不在Amazon数据中心)的带宽利用率就没有用了,完成操作的时间也就更长了。正如Dan和Stefan在下面的回答中所说,有一种方法可以在不公开密码的情况下启用HTTP POST到Amazon。感谢您的回答,但我将继续使用Amazon web服务存储数据。现在看来这是我最好的选择。干杯汉克斯·斯凯勒-我开始慢慢地对S3有了更多的了解。目前,客户可以在他们的页面中将脚本引用添加到S3上的my js中,这样就可以了。但我希望他们能够点击一个按钮,让js向我发送数据。我现在认为最好在我的网站上设置一个web服务,并让js调用它。你能看到这方面的跨域问题吗?正如我在回答中提到的,有一种方法可以通过为每个请求创建一个唯一的签名来验证请求,然后在直接发送到S3的POST请求中包含该签名。签名可以由您的服务器生成,因此客户端不需要HMAC实现,您的AWS凭据保持安全。谢谢Dan,很高兴知道。我最终从S3提供javascript小部件,然后使用easyxdm向我的web服务器发送跨域帖子来存储信息。