Vì một lý do nào đó, tôi nhận được một InvalidAuthenticityToken khi gửi yêu cầu đăng bài đến ứng dụng của tôi khi sử dụng json hoặc xml. Sự hiểu biết của tôi là các đường ray nên yêu cầu mã thông báo xác thực chỉ cho các yêu cầu html hoặc js và do đó tôi không nên gặp phải lỗi này. Giải pháp duy nhất tôi đã tìm thấy cho đến nay là vô hiệu hóa protect_from_forgery cho bất kỳ hành động nào tôi muốn truy cập thông qua API, nhưng điều này không lý tưởng cho các lý do rõ ràng. Suy nghĩ?đường ray - InvalidAuthenticityToken cho yêu cầu json/xml
def create
respond_to do |format|
format.html
format.json{
render :json => Object.create(:user => @current_user, :foo => params[:foo], :bar => params[:bar])
}
format.xml{
render :xml => Object.create(:user => @current_user, :foo => params[:foo], :bar => params[:bar])
}
end
end
và đây là những gì tôi nhận được trong các bản ghi bất cứ khi nào tôi vượt qua một yêu cầu đến hành động:
Processing FooController#create to json (for 127.0.0.1 at 2009-08-07 11:52:33) [POST]
Parameters: {"foo"=>"1", "api_key"=>"44a895ca30e95a3206f961fcd56011d364dff78e", "bar"=>"202"}
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
thin (1.2.2) lib/thin/connection.rb:76:in `pre_process'
thin (1.2.2) lib/thin/connection.rb:74:in `catch'
thin (1.2.2) lib/thin/connection.rb:74:in `pre_process'
thin (1.2.2) lib/thin/connection.rb:57:in `process'
thin (1.2.2) lib/thin/connection.rb:42:in `receive_data'
eventmachine (0.12.8) lib/eventmachine.rb:242:in `run_machine'
eventmachine (0.12.8) lib/eventmachine.rb:242:in `run'
thin (1.2.2) lib/thin/backends/base.rb:57:in `start'
thin (1.2.2) lib/thin/server.rb:156:in `start'
thin (1.2.2) lib/thin/controllers/controller.rb:80:in `start'
thin (1.2.2) lib/thin/runner.rb:174:in `send'
thin (1.2.2) lib/thin/runner.rb:174:in `run_command'
thin (1.2.2) lib/thin/runner.rb:140:in `run!'
thin (1.2.2) bin/thin:6
/opt/local/bin/thin:19:in `load'
/opt/local/bin/thin:19
này không thực sự làm việc cho các ứng dụng web mặc dù. Trình duyệt không thể chạy curl. = ( – NullVoxPopuli
Vấn đề là tôi đã sửa lỗi vấn đề với curl và thấy rằng điều quan trọng là phải gửi tiêu đề Kiểu nội dung phù hợp. – mlambie