2010-12-08 55 views
1

我正在構建一個運行在rails服務器上的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客戶端將映像發佈到Rails服務器的正確方法是什麼?

的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

謝謝,這個作品。但是,這是否也會在請求來自實際瀏覽器時禁用檢查? (我的Rails服務器同時提供一個Android客戶端和一個網站) – tstyle 2010-12-09 03:40:28

0

由Jesse Wolgamott解決的問題說,但當我提交表單(更新,創建,顯示)時,頁面顯示「您正在重定向」消息。在此之前,頁面正確重定向。我正在使用rails 2.3.8.how來解決這個問題?

相關問題