nodejs中的HTTP / 0.9支持

时间:2016-11-28 14:18:10

标签: node.js http

我正在将NodeJ的请求发送到使用HTTP/0.9的旧服务器。响应来了并抛出错误:Parse Error。在HTTP协议支持的文档中找不到任何内容。我做错了什么或NodeJS不支持HTTP/0.9

2 个答案:

答案 0 :(得分:2)

Node不支持HTTP / 0.9,不仅因为它几乎不再使用,而且因为真正的HTTP / 0.9响应只是由响应数据组成。这意味着没有状态行指示响应的HTTP版本,因此无法区分HTTP / 0.9响应与格式错误的HTTP / 1.x响应,甚至是以字符串“HTTP”开头的HTTP / 0.9响应/1.1 200 OK \ r \ n“。

答案 1 :(得分:2)

假设你使用linux,一种破解它的方法是使用curl的子进程。 这是一个代码示例,应用于指向旧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)
*/