问题描述
问题:同样的接口请求,使用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验证?
问题解答
回答1:get是不验证csrf的,请问你的csrf_token放在请求的body里面了吗?
回答2:一般都要在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’回答3:
是否包含在表单中 或者ajax请求body中加入了这个看你的说明应该是在post请求的body中没有加入这个csrf参数