javascript - 使用 JavaScript 的云 API(亚马逊、Azure)

标签 javascript api azure amazon-web-services cloud

我正在研究直接从客户端 JavaScript 使用某些云存储的可能性。但是,我遇到了两个问题:

  1. 安全性 - 该架构通常建立在每个客户端的基础上,因此有一个 API key (例如)。这是有问题的,因为我需要每个用户的安全性。我无法向所有用户提供相同的 API key 。

  2. 跨域 AJAX。浏览器可以使用 HTTP header 来执行跨域请求,但这意味着我必须能够在云端。但是,要实现此功能,我唯一需要的是能够添加自定义 HTTP 响应 header :Access-Control-Allow-Origin: otherdomain.com

我的场景涉及来自 JS 客户端的大量简单队列消息,我想我会使用云来摆脱来 self 的主要托管提供商的流量。 Windows Azure有这个队列服务部分,看起来和我需要的很接近,只是我不知道这些问题是否可以解决。

有什么想法吗?在我看来,云服务的 JavaScript 客户端是在不久的将来不可避免的场景。

那么,是否有一些具有 REST API 的云存储可以提供客户端身份验证管理,并且不向他们提供 API key ?

最佳答案

Windows Azure Blob 存储有 Shared Access Signature 的概念。 (SAS),它可以在服务器端发布,本质上是一个特殊的 URL,客户端可以写入该 URL,而无需直接访问存储帐户 API key 。这是 Windows Azure 存储中唯一允许在不访问存储帐户 key 的情况下写入数据的机制。

SAS 可能会过期(例如,给用户 10 分钟的时间使用 SAS URL 进行上传),并且可以设置为允许在发布后取消访问。此外,SAS 对于限时读取访问非常有用(例如,给用户 1 天的时间观看此视频)。

如果您的 JavaScript 客户端也在浏览器中运行,那么您确实可能会遇到跨域问题。我有两个想法 - 都没有经过测试!一种想法是JSONP -风格的方法(尽管这仅限于 HTTP GET 调用)。另一个(更有希望的)想法是将 .js 文件与您的数据文件一起托管在 blob 存储中,这样它们就位于同一域中(希望您的网络浏览器满意)。

“真正的”解决方案可能是跨源资源共享 ( CORS ) 支持,但这在 Windows Azure Blob 存储中不可用,并且仍在浏览器中出现(与其他 HTML 5 优点一起)。

关于javascript - 使用 JavaScript 的云 API(亚马逊、Azure),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6006733/

相关文章:

azure - 如何在 Microsoft Azure Vault 中存储 keystore ?

Azure 数据工厂 - HTTP 链接服务的动态 URL?

javascript - Google Apps 脚本 HTML 表单不会提交

javascript - Spine.js 中的集合

javascript - jQuery 自动完成将值附加到 URL

c# - 如何通过 TFS API 获取最新的变更集编号

javascript - ng-show 和 ng-hide 不起作用

javascript - react 子组件不响应点击事件

iphone - 高级核心动画/OpenGLES 教程请求

c# - 将文档添加到 Azure Cosmos DB 时缺少属性