最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

为什么此node.js http请求无限期挂起?

运维笔记admin21浏览0评论

为什么此node.js http请求无限期挂起?

为什么此node.js http请求无限期挂起?

我正在尝试使用以下代码获取HTTP响应标头:

var http = require('http');

const options = {
    hostname: 'google',
    port: 443,
    path: '/',
    method: 'GET'
  };

  const req = http.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    res.on('data', (chunk) => {
      console.log(`BODY: ${chunk}`);
    });
    res.on('end', () => {
      console.log('No more data in response.');
    });
  });

  req.on('error', (e) => {
    console.error(`problem with request: ${e.message}`);
  });

但是,此代码无限期地挂在节点上,没有输出或退出。为什么是这样?我从这里的官方文档改编而成:.html#http_http_request_options_callback

回答如下:

首先,即使req.end()明确指出,您仍未打完对documentation you've cited的呼叫

使用http.request()时,必须总是调用req.end()来表示请求结束-即使没有数据写入请求主体。

然后,端口443用于HTTPS,而不用于普通HTTP。这意味着您必须使用https界面而不是http

var https = require('https');
...
const req = https.request(options, (res) => {
发布评论

评论列表(0)

  1. 暂无评论