HTTP / 0.9支持nodejs

我正从NodeJ发送请求到使用HTTP/0.9传统服务器。 响应来,并引发错误: Parse Error 。 在关于HTTP协议支持的文档中找不到任何东西。 我做错了什么或NodeJS不支持HTTP/0.9

Node不支持HTTP / 0.9,不仅仅因为它不再被使用,而且因为真正的HTTP / 0.9响应包含响应数据。 这意味着没有状态行指示响应的HTTP版本,所以无法区分HTTP / 0.9响应和畸形的HTTP / 1.x响应,甚至是以string“HTTP开头的HTTP / 0.9响应/1.1 200 OK \ r \ n“。

假设你使用linux,一种方法是使用curl来使用subprocess。 这是一个代码示例,应用于指向旧Shoutcast服务器的URL。

 var URL = "http://streaming3.radiocat.net/;"; // This will fail because HTTP 0.9 is not supported by Node. var http = require("http"); var url = require("url"); http.get(url.parse(URL), function (res) { res.on("data", function(data) { console.log(data); }); }); // This will work var cp = require('child_process'); var request = cp.spawn("curl", ["-L", URL], { stdio: ['pipe', 'pipe', process.stderr] }); request.stdout.on("data", function(data) { console.log(data); }); /* Detail of the http.get error: events.js:182 throw er; // Unhandled 'error' event ^ Error: Parse Error at Socket.socketOnData (_http_client.js:454:20) at emitOne (events.js:115:13) at Socket.emit (events.js:210:7) at addChunk (_stream_readable.js:266:12) at readableAddChunk (_stream_readable.js:253:11) at Socket.Readable.push (_stream_readable.js:211:10) at TCP.onread (net.js:585:20) */