【问题标题】:How do I make a POST request from one rails app to another?如何从一个 Rails 应用程序向另一个应用程序发出 POST 请求?
【发布时间】:2013-11-25 00:11:25
【问题描述】:

我有 2 个 ruby​​ on rails 项目,一个有表格并将其发布到另一个项目。然后另一个项目应将其转换为模型、报价并保存。

我已经做了一个报价资源和一个带有 create 方法的控制器。表单的操作是其他项目/报价和方法发布。据我了解,这应该调用报价控制器中的 create 方法。

但是我收到了这个错误:

The change you wanted was rejected.
Maybe you tried to change something you didn't have access to.

有人知道是什么导致了这个错误吗?是heroku引起的还是与我的应用程序有关?我对 rails/heroku 还很陌生,所以我不确定,如果有任何帮助,我们将不胜感激。

编辑 1 经过一些研究,我似乎需要真实性令牌来匹配。但是,由于我有两个应用程序,这是如何实现的?

【问题讨论】:

  • 我不知道这是否是真正的问题。但是每个 Rails 应用程序都有secret_token,可以在initializers/secret_token.rb 中找到。每当呈现表单时,都会根据应用程序的secret_token 为其生成一个authenticity_token。发布表单时,应用程序会检查 authenticity_token 是否有效(同样基于 secret_token),如果无效,则发布请求未完成,这可能是您发布表单的原因另一个应用程序!
  • 您在两个应用程序之间使用共享数据库吗?
  • 不仅第二个应用程序有数据库-@MhdSyrwan,好吧,也许这就是问题所在,我试着弄清楚我如何使用秘密令牌-@Tamer Shlash
  • heroku logs 中显示了什么?

标签: ruby-on-rails csrf-protection


【解决方案1】:

好的,所以在检查 heroku 日志之后,这似乎是 CSRF 的问题。当我在两个应用程序中注释掉防止伪造行时,它运行良好,并且我能够在它们之间发送数据。
需要对这是否明智的事情进行一些研究(猜测不是)。感谢大家的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2018-01-20
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多