gpt4 book ai didi

node.js - 为什么这个 node.js http 请求会无限期挂起?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:07 27 4
gpt4 key购买 nike

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

var http = require('http');

const options = {
hostname: 'google.com',
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}`);
});

然而,这段代码只是无限期地卡在 Node 中,没有输出或退出。为什么是这样?我从这里的官方文档中改编了这个:https://nodejs.org/api/http.html#http_http_request_options_callback

最佳答案

首先,您在最后错过了对 req.end() 的调用,即使 documentation you've cited明确指出

With http.request() one must always call req.end() to signify the end of the request - even if there is no data being written to the request body.

然后,端口 443 用于 HTTPS 而不是普通 HTTP。这意味着您必须使用 https 接口(interface)而不是 http:

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

关于node.js - 为什么这个 node.js http 请求会无限期挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58387696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com