首页  >  问答  >  正文

ruby - Can't verify CSRF token authenticity

问题:

同样的接口请求,使用get工作正常。
使用post请求提示:
Can't verify CSRF token authenticity

临时的解决方法

在controller 中跳过验证

skip_before_action :verify_authenticity_token, :only => ["your_update_action"]

http://stackoverflow.com/questions/19390389/using-curl-to-access-backend-api-of-rails-app-that-implements-devise

后续疑问

如何通过post请求发送token验证?

高洛峰高洛峰2709 天前949

全部回复(3)我来回复

  • 阿神

    阿神2017-04-24 16:01:32

    get是不验证csrf的,请问你的csrf_token放在请求的body里面了吗?

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-04-24 16:01:32

    一般都要在layout文件中调用<%= csrf_meta_tags %> 方法,并在js中引入 jquery_ujs

    例如

    application.erb

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>you title</title>
      .....
      <%= csrf_meta_tags %>
    </head>
    <body>
    </body>
    </html>
    

    application.js

    #= require jquery_ujs

    Gemfile

    gem 'rails-jquery'

    回复
    0
  • 高洛峰

    高洛峰2017-04-24 16:01:32

    是否包含在表单中 或者ajax请求body中加入了这个
    看你的说明应该是在post请求的body中没有加入这个csrf参数

    回复
    0
  • 取消回复