当前位置: 首页 > 面试题库 >

如何在Node.js中使用http.request限制响应长度

黄宏毅
2023-03-14
问题内容

因此,在这段(简化的)代码中,当有人点击我的节点服务器时,我向另一个网站发出GET请求,并将HTML页面标题打印到控制台。工作良好:

var http = require("http");
var cheerio = require('cheerio');

var port = 8081;
s = http.createServer(function (req, res) {
var opts = {
    method: 'GET',
    port: 80,
    hostname: "pwoing.com",
    path: "/"
};
http.request(opts, function(response) {
    console.log("Content-length: ", response.headers['content-length']);
    var str = '';
    response.on('data', function (chunk) {
        str += chunk;
    });
    response.on('end', function() {
        dom = cheerio.load(str);
        var title = dom('title');
        console.log("PAGE TITLE: ",title.html());
    });
}).end();
res.end("Done.");
}).listen(port, '127.0.0.1');

但是,在实际应用中,用户可以指定要命中的URL。这意味着我的节点服务器可能正在下载20GB的电影文件或其他文件。不好。content-
length报头没有被用来停止它,因为它并不是所有服务器都传输的。然后问题是:

我如何告诉它在收到第一个10KB之后停止GET请求?

干杯!


问题答案:

读取足够的数据后,您可以中止请求:

  http.request(opts, function(response) {
    var request = this;
    console.log("Content-length: ", response.headers['content-length']);
    var str = '';
    response.on('data', function (chunk) {
      str += chunk;
      if (str.length > 10000)
      {
        request.abort();
      }
    });
    response.on('end', function() {
      console.log('done', str.length);
      ...
    });
  }).end();

由于数据以各种大小的块到达,因此它将在10.000字节 左右 终止请求。



 类似资料:
  • 问题内容: 我想从https请求中检索二进制数据。 我发现了一个使用请求方法的 类似问题 ,即使用request 在Node.js中获取二进制内容,是说将 编码 设置为 null 应该可以,但是不能。 编辑:将编码设置为 “二进制” 也不起作用 问题答案: 接受的答案对我不起作用(即,将编码设置为二进制),即使是询问该问题的用户提到它也不起作用。 这是对我有用的东西,摘自:http : //cha

  • 问题内容: 我试图使用。通过Node.js向Web服务提交xml请求。 这是我的代码。我的问题是,而不是我想将xml发布到服务。 何去做? 问题答案: 返回ClientRequest对象,该对象也是可写流。代替做或

  • 本文向大家介绍node.js中的http.request方法使用说明,包括了node.js中的http.request方法使用说明的使用技巧和注意事项,需要的朋友参考一下 方法说明: 函数的功能室作为客户端向HTTP服务器发起请求。 语法: 由于该方法属于http模块,使用前需要引入http模块(var http= require(“http”) ) 接收参数: option   数组对象,包含以

  • 问题内容: 我建立了一个HTTP服务器。我正在使用下面的代码来获取请求URL,但未获取完整URL。 我只得到和。 我想获得完整的客户端请求的URL作为或。 谢谢。 问题答案: 从net / http包的文档中: 您的代码的修改后的版本: 输出示例:

  • 我需要为聊天应用程序实现。我已经搜索过了,但我只找到了如何使用在中实现它。如何仅使用和实现它?你能给我介绍一些相关的文章或资料吗?