gpt4 book ai didi

node.js - 为什么请求事件被触发两次

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:37 25 4
gpt4 key购买 nike

我有一个如下所示的服务器:

const http2 = require('http2');
const {
HTTP2_HEADER_METHOD,
HTTP2_HEADER_PATH,
HTTP2_HEADER_STATUS,
HTTP2_HEADER_CONTENT_TYPE
} = http2.constants;

const fs = require('fs');

const server = http2.createSecureServer({
key: fs.readFileSync('./ssl/localhost-privkey.pem'),
cert: fs.readFileSync('./ssl/localhost-cert.pem')
});


server.on('error', (err) => {
console.error(err);
});

server.on('stream', (stream, headers,flags) => {
stream.respond({
'content-type': 'text/html',
[HTTP2_HEADER_STATUS]: 200,
[HTTP2_HEADER_CONTENT_TYPE]: 'text/plain'
});
stream.end('<h1>Hello World 2</h1>');
});



server.on('request', (msg) => {
/* THIS IS BEING FIRED TWICE*/
console.log('request:' + JSON.stringify(msg) );
});


server.on('session', (msg) => {
/* THIS IS ALSO BEING FIRED TWICE*/
console.log('session:' + JSON.stringify(msg) );
});

server.listen(8443);

在浏览器中输入 URL https://myserver:8443。在我的服务器上,我可以看到 session 事件被控制台记录两次。为什么会发生这种情况,因为我只提出了一个请求?同样,每次刷新页面时,请求事件都会被触发两次,而不是只触发一次。我使用的是nodejs 11.0.0

最佳答案

您应该使用 console.log(msg.url) 记录正在请求的 URL。您可能会发现其中一个请求是针对 favicon.ico 的,因为这是浏览器在尚未为特定域缓存 favicon 时会请求的内容。

网络服务器的所有请求都必须查看所请求的实际资源,并根据所请求的确切资源进行适当的响应。

关于node.js - 为什么请求事件被触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53036889/

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