2016-09-13 80 views

回答

0

不,RFC 7231描述內容編碼。如果您發送的是Content-Encoding,則需要確保該編碼中的內容

如果您發送Content-Encoding: gzip和純文本消息,您將(正確)收到HTTP 400gzip消息的正文總是以0x1f 0x8b開頭,如果服務器沒有找到那個int POST請求,這是正確的抱怨。

另一個原因是你需要一個合適的Content-Length標題。這不會是原始JSON的長度,它必須是壓縮JSON的長度(以字節爲單位)。

在發送任何內容之前,您需要先執行JSON的gzip,因爲您需要事先知道要在Content-Length中放置什麼內容。

需要特別注意的是:如果JSON是那麼大(例如幾個千兆字節),你可能需要Transfer-Encoding: chunked,它自帶了複雜功能。 (你不發送Content-Length,但增加卡盤的長度,以身體本身。)

+0

a)RFC 2295完全不相關;請參閱RFC 7231。 b)我不知道你爲什麼認爲T-E在這裏是相關的...... –

+0

@JulianReschke - a)你是對的,更新。 b)在POST中允許T-E(據我所知),如果他的JSON很大(對於答案不是嚴格需要,但可能有用),它是OP的一個選項。 – grochmal

+0

當壓縮內容到達標頭爲「Content-Encoding」:「GZIP」的服務器時,服務器是否自動解壓縮它? – user902997

0

如果它自動做到這一點,是100%依賴於你正在使用的HTTP客戶端,如果他們這樣實現。至少在我經常使用的客戶端中,通常設置一個頭文件將會自動編碼它而不是

相關問題