Articles of 传输编码

在HttpWebRequest中使用c#添加预告片

我试图在HttpWebRequest标题中添加尾部,但它不是在文件数据结束之后追加尾部。 wreq.ContentType = "application/octet-stream"; wreq.AllowWriteStreamBuffering = false; wreq.SendChunked = true; //wreq.Headers.Add(HttpRequestHeader.Te, "trailers"); wreq.Headers.Add(HttpRequestHeader.Trailer, "Test"); wreq.Headers["Test"] = "the-value"; using (Stream POSTstream = wreq.GetRequestStream()) { //dataByte is file-data in byte[] POSTstream.Write(dataByte, 0, dataByte.Length); POSTstream.Flush(); //hashValue is trailer in byte[] POSTstream.Write(hashValue, 0, hashValue.Length); POSTstream.Flush(); POSTstream.Close(); } 它应该在空白块之后追加这个“Test”@ EOF的预告片,但是它不会追加它。 当我试图以编程方式添加预告片时,将其视为文件数据而不是预告片。 预期的要求: POST <URL> HTTP/1.1 Content-Type: application/octet-stream Trailer: Test Transfer-Encoding: […]

使用NodeJSstream式传输Http响应

我正在试验一个简单的NodeJS HTTP服务器的各种响应。 我试图实现的效果是更快的网页视觉渲染。 由于响应是stream传输到浏览器与transfer-encoding: chunked (对吧?)我想我可以呈现页面布局第一次和其他数据延迟后。 var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/html' , 'Transfer-Encoding': 'chunked' }); res.write('<html>\n'); res.write('<body>\n'); res.write('hello '); res.write('</body>\n'); res.write('</html>\n'); setTimeout(function () { res.end('world'); },1500); }).listen(3000, '127.0.0.1'); 事情是这样的,直到res.end('world')才发送响应,除非已经写入的数据足够长,例如res.write(new Array(2000).join('1'))而不是那个res.write('hello') ,会做的伎俩。 节点是否正在caching我的写入,直到数据足够大才能发送? 如果是这样的话,块大小是可configuration的吗?

使用Node.JS服务HTTP / 1.0响应(未知内容长度,分块传输编码)

问题 我正在通过Node.JS提供未知长度的资源。 因此,不能设置Content-Length标题。 对于HTTP 1.1,要求分块编码用于这种性质的资源。 Node.JS知道这一点,并发送我自己的数据块大小的传输编码,与以下头: HTTP/1.1 200 OK Transfer-Encoding: chunked Connection: close … 对于乖巧的客户来说,这一切都很好。 不过,我有一些不太好的客户(即Android 2.2及更早版本),我必须支持。 这些客户端不支持正确的分块传输编码。 修复尝试#1 我最初的想法是将编码设置为none : response.writeHead(200, {'Transfer-Encoding': 'none'}); 这将禁用Node.JS的自动分块编码并保持与大多数客户端的兼容性。 不过,现在我已经打破了Android 2.3+客户端,因为他们只是看到这样一个伪造的传输编docker咳嗽和呛。 修复尝试#2(我需要帮助) 当我用HTTP/1.0发出请求时,服务器正确地返回没有分块编码的响应: HTTP/1.1 200 OK Connection: close … 这解决了我的问题,使我能够为我所有的麻烦客户服务。 我不必为Transfer-Encoding发送伪造标题,而且我也不必指定内容的长度。 如何强制Node.JS的HTTP服务器始终以HTTP / 1.0模式运行?