2011-12-12 23 views
0

我們已經在我們Rails代碼的函數,它接受一個JSON POST體:Gzip已解壓縮JSON POST身體的Rails /乘客/ Nginx的

contacts = ActiveSupport::JSON.decode(request.raw_post.gsub("+", "")) 

(我知道,我可以從params["_json"]得到這個以及,但我們有沒有得到投入params["_json"]出於某種原因非常大(MBS)POST機構(和+也引發錯誤)。

由於JSON通常是從移動客戶端發送的,它給我們以優化很重要上傳大小,我們希望切換到郵政正文gzipped。

然而,無論我們做什麼,我們得到沒有行號相同的錯誤:

MultiJson::DecodeError (743: unexpected token at ''): 

我們曾嘗試:

gzipped_contacts = Zlib::GzipReader.new(StringIO.new(request.raw_post)).read 
    contacts = ActiveSupport::JSON.decode(gzipped_contacts.gsub("+", "")) 

此:

gzipped_contacts = ActiveSupport::Gzip.decompress(request.raw_post) 
    contacts = ActiveSupport::JSON.decode(gzipped_contacts.gsub("+", "")) 

與解決在這裏找到:Rails: how to unzip a compressed xml request body?

我敢肯定,這不是發生在c ontroller級別,因爲我不能在那裏記錄任何東西,所以它需要在中間件或服務器上完成(但我找不到任何讓Nginx可以放氣的東西)。請協助!

回答