2014-03-27 98 views
4

我正在爲Redmine平臺的插件工作,我想使用鏈接將文件附加到文檔(基本上是上傳文件)的一種形式,爲此我在一個方法內創建POST請求。Rails/Redmine - 無法驗證真實性令牌導致422錯誤

我按照說明here,我設置內容類型爲application/octet-stream按要求然後我把文件內容放在請求正文。

我在這個網站上閱讀了很多帖子,我知道這是一個經常被問到的問題,但我無法正確地處理我的請求,我仍然遇到了錯誤。這裏是我的代碼:

uri = URI.parse("http://<my_server_IP_address>:3000/uploads.js") 

http = Net::HTTP.new(uri.host, uri.port) 
request = Net::HTTP::Post.new(uri.path, initheader = {'X-CSRF-Token' => form_authenticity_token, 'Content-Type' => 'application/octet-stream'}) 
file = File.new("/home/testFile.txt", 'rb') 
request.body = file.read 
@response = http.request(request) 

正如你所看到的,我設置了CSRF令牌頭使用form_authenticity_token方法,但我仍然得到一個422錯誤。

Filter chain halted as :verify_authenticity_token rendered or redirected 
Completed 422 Unprocessable Entity in 4.7ms (ActiveRecord: 0.0ms) 

我也試圖把skip_before_filter :verify_authenticity_token在我的控制器的beggining雖然不推薦,但它不工作也沒有。

你有什麼想法嗎?

注:我使用Rails工作3.2.16和Ruby 1.9.3-P392和管理平臺2.4.2

回答

2

您的意思是張貼到 「uploads.js」 而不是 「uploads.json」?

uri = URI.parse("http://<my_server_IP_address>:3000/uploads.js") 

該文檔指示您將POST發送到uploads.json或uploads.xml,看似基於您希望收到的內容格式作爲迴應。

(會作出對你的問題發表評論,但我還沒有爲善緣)

+0

我嗅到了網絡和URI是'uploads.js'但閱讀'ApplicationController'更後深深地看到只接受'.json'和'.xml',所以你是對的。我在幾個小時前開始工作,這是答案的一部分。 – Shredator

相關問題