【问题标题】:Rails middleware to access API without Access Control Allow Origin headerRails 中间件在没有访问控制允许 Origin 标头的情况下访问 API
【发布时间】:2014-05-08 15:10:23
【问题描述】:

我们的目标是创建一个 rails 应用程序,该应用程序将通过其 API 定期从在线云 POS 服务获取数据。要收集的数据是某些帐户的库存信息,如果某个项目的数量达到一定水平,应用程序将向用户发送电子邮件。此外,该应用程序将在未来用于向安卓设备发送推送通知。我的问题是,我的 rails 应用程序会受到同源策略的影响吗?如果是,是否有解决方法。我之前尝试过使用 curl 并且它可以工作,但是当我使用 javascript 时,服务器会响应错误。

【问题讨论】:

  • 我是否需要在我的应用程序上允许这些标头?我认为我的应用程序不需要允许这些标头,因为它是 android 应用程序的唯一中间件,并且 android 应用程序不受相同限制源策略。问题出在我要连接的服务中。他们的服务器不允许跨源资源共享。
  • 哦,从浏览器到他们的服务器?在这种情况下,您只能使用 jsonp
  • 不,它的服务器到 server.xD。
  • i.stack.imgur.com/a39X3.jpg 这是该软件工作原理图的图片链接

标签: android ruby-on-rails same-origin-policy


【解决方案1】:

CORS 没有解决方法 - 这是保护您的服务器免受随机访问的标准方法。正如@apnediving 提到的,您可以使用rack-cors gem 来管理您的服务器上的CORS 策略

如果您依赖其他服务器获取数据,则必须更新他们的 CORS 政策以允许您连接到他们。 CORS 策略只是“主机”服务器的看门人

基本上,您需要做的就是允许一系列endpoints(网址)以允许第三方访问(通常通过xhr - 这就是您收到错误的原因)。据我所知,您需要解决从您的应用程序访问第三方 API 的问题 - 这是 POS 服务提供商的职权范围

【讨论】:

  • 如果您提供更多背景信息,我们将能够更好地提供帮助
  • 给我 5 分钟,我将发布一张关于应用程序将做什么的图表。
  • 看一下,为什么不直接使用Curl从API中获取数据呢?无论如何,Javascript 仅适用于异步请求
  • 谢谢你们!我现在可以连接到 API,我使用的是 OPEN-URI 而不是 cURL。我不知道 javascript 仅用于异步请求,我认为服务器到服务器的请求不起作用。我知道的问题是,在每个设定的时间间隔内,我的服务器都必须从 API 获取数据。我的应用程序必须模仿来自 API 调用的数据内容(我的应用程序有自己的数据库)。我需要知道一种有效的方法,因为可能有数千条记录,我需要根据数据的变化来更新它(例如更新一行,或者如果它不存在则添加一个新行)跨度>
猜你喜欢
  • 2018-02-26
  • 2019-12-20
  • 2015-12-19
  • 2019-07-09
  • 2018-03-27
  • 1970-01-01
  • 2022-06-25
  • 2020-09-25
  • 2017-12-27
相关资源
最近更新 更多