草庐IT

javascript - 带有 JavaScript 的云 API(亚马逊、Azure)

coder 2024-05-13 原文

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

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

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

我的场景涉及大量来自 JS 客户端的简单队列消息,我想我会使用云来摆脱来 self 的主要托管服务提供商的这些流量。 Windows Azure有这个Queue Service部分,貌似和我需要的差不多,只是不知道能不能解决这些问题。

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

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

最佳答案

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

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

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

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

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

有关javascript - 带有 JavaScript 的云 API(亚马逊、Azure)的更多相关文章

  1. ruby-on-rails - ActionController::RoutingError: 未初始化常量 Api::V1::ApiController - 2

    我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc

  2. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  4. ruby-on-rails - Mandrill API 模板 - 2

    我正在使用Mandrill的RubyAPIGem并使用以下简单的测试模板:testastic按照Heroku指南中的示例,我有以下Ruby代码:require'mandrill'm=Mandrill::API.newrendered=m.templates.render'test-template',[{:header=>'someheadertext',:main_section=>'Themaincontentblock',:footer=>'asdf'}]mail(:to=>"JaysonLane",:subject=>"TestEmail")do|format|format.h

  5. ruby-on-rails - 在 Ruby (on Rails) 中使用 imgur API 获取图像 - 2

    我正在尝试使用Ruby2.0.0和Rails4.0.0提供的API从imgur中提取图像。我已尝试按照Ruby2.0.0文档中列出的各种方式构建http请求,但均无济于事。代码如下:require'net/http'require'net/https'defimgurheaders={"Authorization"=>"Client-ID"+my_client_id}path="/3/gallery/image/#{img_id}.json"uri=URI("https://api.imgur.com"+path)request,data=Net::HTTP::Get.new(path

  6. ruby-on-rails - 带有 Zeus 的 RSpec 3.1,我应该在 spec_helper 中要求 'rspec/rails' 吗? - 2

    使用rspec-rails3.0+,测试设置分为spec_helper和rails_helper我注意到生成的spec_helper不需要'rspec/rails'。这会导致zeus崩溃:spec_helper.rb:5:in`':undefinedmethod`configure'forRSpec:Module(NoMethodError)对thisissue最常见的回应是需要'rspec/rails'。但这是否会破坏仅使用spec_helper拆分rails规范和PORO规范的全部目的?或者这无关紧要,因为Zeus无论如何都会预加载Rails?我应该在我的spec_helper中做

  7. ruby-on-rails - 使用 HTTParty 的非常基本的 Rails 4.1 API 调用 - 2

    Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"

  8. ruby-on-rails - 是否使用 API - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我的公司有一个巨大的数据库,该数据库接收来自多个来源的(许多)事件,用于监控和报告目的。到目前为止,数据中的每个新仪表板或图形都是一个新的Rails应用程序,在巨大的数据库中有额外的表,并且可以完全访问数据库内容。最近,有一个想法让外部(不是我们公司,而是姊妹公司)客户访问我们的数据,并且决定我们应该公开一个只读的RESTfulAPI来查询我们的数据。我的观点是-我们是否也应该为我们的自己

  9. Ruby:如何使用带有散列的 'send' 方法调用方法? - 2

    假设我有一个类A,里面有一些方法。假设stringmethodName是这些方法之一,我已经知道我想给它什么参数。它们在散列中{'param1'=>value1,'param2'=>value2}所以我有:params={'param1'=>value1,'param2'=>value2}a=A.new()a.send(methodName,value1,value2)#callmethodnamewithbothparams我希望能够通过传递我的哈希以某种方式调用该方法。这可能吗? 最佳答案 确保methodName是一个符号,而

  10. ruby-on-rails - 带有 Pry 的 Rails 控制台 - 2

    当我进入Rails控制台时,我已将pry设置为加载代替irb。我找不到该页面或不记得如何将其恢复为默认行为,因为它似乎干扰了我的Rubymine调试器。有什么建议吗? 最佳答案 我刚发现问题,pry-railsgem。忘记了它的目的是让“railsconsole”打开pry。 关于ruby-on-rails-带有Pry的Rails控制台,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

随机推荐