我們已經在我們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可以放氣的東西)。請協助!