2010-12-08 20 views
1

私は、レールサーバーから実行されるAndroidアプリを構築しています。私は、サーバーへの単純な文字列データを投稿しようとしたとき、最初に、私はInvalidAuthenticityToken問題に走ったが、私は「JSON」AndroidクライアントからRailsサーバーに画像を投稿せずに、InvalidAuthenticityTokenを投稿してください

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

次のステップだったにコンテンツタイプを設定することにより、認証を回避できることに気づきましたプロファイル写真のアップロードを取得しようとしています。私はMultipartEntityポストを経由して写真をアップロードしようとしたときただし、「JSON」にコンテンツタイプを設定すると、次のエラー

はStandardError(無効なJSON文字列)を引き起こす:

ではなく、コンテンツタイプを設定しますInvalidAuthenticityToken例外が返されます。外部Javaクライアントから画像をレールサーバに投稿する正しい方法は何ですか?

ActionController :: InvalidAuthenticityToken (ActionController :: InvalidAuthenticityToken):

答えて

3

でこれを行うことができ、私は、ブラウザの要求のためのチェックが残っているので、唯一の特定の機能のために、真正性チェックを無効にする

protect_from_forgery :except => :upload_avatar_pic 

を使用して終了しました検証された。

0

あなたはAPI非Webクライアントから非取得の呼び出しにチェック信憑性を無効にすることができます。あなたはジェシーの提案に基づいてフィルタの前に

class ApiController < ApplicationController 
    skip_before_filter :verify_authenticity_token 

    def create 
    #or whatever 
    end 
end 
+0

ありがとう、これは動作します。しかし、リクエストが実際のブラウザから来たときにチェックを無効にしますか? (私のレールサーバは、アンドロイドクライアントとウェブサイトの両方を提供します) – tstyle

0

Jesse Wolgamottが解決した問題が、私がフォーム(Update、create、show)を送信すると "あなたはリダイレクトされました"というメッセージが表示されます。それ以前はページが正しくリダイレ​​クトされていました。私はこれを解決するためにレール2.3.8を使用していますか?

関連する問題