【问题标题】:Rails production getting 422 error (The change you wanted was rejected)Rails 生产出现 422 错误(您想要的更改被拒绝)
【发布时间】:2019-03-22 08:15:23
【问题描述】:

我正在数字海洋水滴中运行 Rails 产品。我可以加载静态页面,但每当控制器操作(如createsigninsignup)发生时,服务器都会引发“您想要的更改被拒绝”。错误。 有谁知道为什么会这样?

我可以通过控制台添加数据,但不能通过应用程序。

【问题讨论】:

  • 检查应用程序的production.log,并错误记录您的Web服务器(nginx,apache)

标签: ruby-on-rails digital-ocean


【解决方案1】:

您有 2 个选项来解决此问题。 1.在你的cookie中设置CSRF Token 2. 在你的控制器中添加skip_before_action :verify_authenticity_token

【讨论】:

  • 我必须在哪个控制器中添加skip_before_action :verify_authenticity_token。 application_controller??
  • 在控制器中,它会返回此错误。您讲述了create 之类的操作。在这个控制器中,你需要添加。
  • 或者你可以在你的基本控制器中添加它(如果你当然有的话)
  • 我强烈建议您不要这样做 skip_before_action :verify_authenticity_token,因为它不会让您的应用程序遭受 CSRF 攻击吗?
【解决方案2】:

有时可能是由于外部配置问题,例如,在我的情况下,rails 中的一切都很好,但在 nginx 中,我错过了 X-Forwarded-Ssl 配置并且得到了

HTTP Origin header (https://www.example.com) didn't match 
request.base_url (http://www.example.com)

通过设置解决了

server {
 ....
 location @app {
 ...
   proxy_set_header  X-Forwarded-Ssl on;
 ...
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 2019-07-12
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 2020-07-21
    相关资源
    最近更新 更多