【问题标题】:How can I make POST requests without making my API key public?如何在不公开 API 密钥的情况下发出 POST 请求?
【发布时间】:2012-06-05 07:39:54
【问题描述】:

使用 imageshack API 我可以将图像上传到 imageshack,但我必须使用 API 密钥才能做到这一点。我可以为将图像上传到 imageshack 创建一个 POST 表单,但必须将密钥放入表单中,并且公开公开 API 密钥。如何在不暴露 API 密钥的情况下将图像上传到 imageshack?

【问题讨论】:

  • 您可以在发送请求之前要求用户登录。成功登录后,您会生成一个令牌(将其存储在数据库中)并随请求一起发送。在服务器端,如果令牌存在,则处理请求,如果不存在,则发送 json { :error => "Invalid token" }
  • 我正在上传到 imageshack 而不是我的服务器。这就是麻烦所在。如果我要上传到我的服务器,我可以遵循你的技术。

标签: ruby ruby-on-rails-3 post imageshack


【解决方案1】:

我认为正确执行此操作的唯一方法是用户首先将图像发布到您的 OWN 应用程序。

然后在您的应用中,您在内部将此 POST 重定向到 ImageShack,在那里您可以安全地使用您的 API 密钥,而无需任何人看到。

您可以使用RestClient 之类的简单方法从后端运行 POST 请求。您需要将图像临时存储在您的服务器上,无论是内存还是磁盘,以便重新传输到 ImageShack。

所以:

  1. 用户通过 POST 将图像发送到您的服务器
  2. 您的服务器在用户的 POST 请求中接收到图像
  3. 您的服务器使用您的 API 密钥将此图像运行 POST 到 ImageShack
  4. 第1步的POST请求成功返回给用户

【讨论】:

  • 是的,我知道通过分两步完成,我可以轻松完成;但我想要一个 1 步的方式来做到这一点。之前,我实现了一个 2 步方式,我只是想确保根本没有 1 步方式。
  • 好的,我明白了。不,我不认为 ImageShack API 甚至打算用于单步过程。您将让用户的浏览器最终在 ImageShack 服务器上的一个奇怪的 API“页面”上结束,该页面只打算被后端用作 API。例如,像 PayPal 这样的东西使用加密的 POST 参数来实现类似 1-step 过程的东西,但 IS 似乎没有提供类似的接口。
猜你喜欢
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 2017-09-15
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
相关资源
最近更新 更多