„Node Express“ turinio ilgis

Aš naudoju node.js ir išreikšti mažame projekte. Nustatau atsakymo antraštę kaip hitu:

 res.set({'Content-Type':'text/plain;charset=utf-8', 'Content-Length': Buffer.byteLength(data, 'utf-8')}); 

Galiu naudoti console.log spausdinimo duomenų ilgį - 317.

Tačiau naršyklės konsolėje aš tiesiog gaunu:

Ryšys: „Keep-Alive“
Turinio kodavimas: GZIP
Turinio tipas: tekstas / paprastas, kodavimas = UTF-8
Data: 2013 m. Birželio 1 d., Šeštadienis, 08:21:59 GMT
Perdavimo kodavimas: fragmentiškas
Vary: Accept-Encoding
X-Powered By: Express

Tad kodėl turinio ilgis išnyko?

15
01 июня '13 в 11:51 2013-06-01 11:51 „Allen Heavey“ yra nustatytas birželio 1 d. 13 val. 11:51 2013-06-01 11:51
ответ 1 atsakymas

Atsakymas yra Transfer-Encoding: chunked . Content-Length čia netaikomas, nes turinys siunčiamas viena ar keliomis dalimis (dalimis) atsako kūno viduje su žymekliu, nurodančiu kiekvieno atskiro fragmento baito ilgį. http://en.wikipedia.org/wiki/Chunked_transfer_encoding

Numatytasis „Node.js“ yra Transfer-Encoding: chunked . Tačiau tai yra išjungta nustatant Content-Length antraštę savo HTTP atsakyme. HTTP modulio dokumentuose sakoma:

„Turinio ilgio“ antraštės siuntimas neleis numatytojo koduoto kodavimo.

Atsakydami į „ Content-Encoding:gzip antraštę, tikriausiai įtraukėte „ connect.compress tarpinę programinę įrangą. Priemonė connect.compress pašalina Content-Length antraštę.

Bet kokiu atveju, jei patys generuojate „gzipped“ turinį, jūsų sukurta „ Content-Length antraštė greičiausiai bus netinkama galutiniam („gzipped“) atsakymui. Laimei, tarpinė programinė įranga, skirta ryšiams, rūpinasi tuo.

Naudojant „Express“ arba „Connect“, neturėtumėte manyti, kad dalykai, kuriuos „siunčiate“ su res objektu, faktiškai siunčiami klientui. Tarp jų yra tarpinė programinė įranga. Visos tarpinės programos gali keisti beveik viską, kas susijusi su atsakymu, įskaitant atsako kūno keitimą ir antraščių pridėjimą, ištrynimą ir keitimą. Tas pats pasakytina ir apie užklausą.

Taip pat žiūrėkite šiuos klausimus:

28
01 июня '13 в 13:53 2013-06-01 13:53 atsakymą pateikė Myrne Stol 01 birželio 13 d. 13:53 2013-06-01 13:53

Kiti klausimai apie žymes arba Užduoti klausimą