开发者

Post an image from Android client to Rails server without triggering InvalidAuthenticityToken

I'm building an Android app that runs off of a rails server. At first, when I tried to post simple String data to the server, I ran into an InvalidAuthenticityToken issue, but realized that I can bypass the authentication by setting the content type to "json"

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(Constants.REST_HOST + "/add_comment");
post.addHeader("Content-Type", "application/json");

The next step was trying to get upload profile picture working. However, when I tried uploading a photo via a MultipartEntity post, setting the content type to 开发者_如何学Python"json" causes the following error

StandardError (Invalid JSON string):

but not setting the content type brings back the InvalidAuthenticityToken exception. What's the correct way to post an image to a rails server from a foreign Java client?

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):


Based on Jesse's suggestion, I ended up using

protect_from_forgery :except => :upload_avatar_pic

to disable authenticity check, but only for a specific function, so checks for browser requests are still validated.


You can disable authenticity checking on API non-get calls from non-web clients. You can do this in a before filter

class ApiController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    #or whatever
  end
end


The problem solved by Jesse Wolgamott said, but the page show "You are being redirected" message when I submit the form (Update,create,show). In before that the page redirected correctly. I am using rails 2.3.8.how to resolve this?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜