【发布时间】:2020-05-13 03:20:22
【问题描述】:
编辑:所以第二个响应肯定是 favicon.ico 问题,但为什么这发生在 chrome 而不是 firefox 中?
原文: 我正在学习 node.js 的 express 并练习中间件的路由。我的问题是“/”路由正在通过,即使我没有发送请求并且我没有调用 next();在它之前的中间件中。此外,当我向“/”路由发送请求时,它会发送双重响应。它是在 chrome 而不是 firefox 中执行此操作的,所以有人可以解释一下区别吗?
const express = require('express');
const app = express();
app.use('/users', (req, res, next) => {
console.log('This handles /users route');
res.send('<h1>This handles /users route</h1>');
});
app.use('/', (req, res, next) => {
console.log('This handles / route');
res.send('<h1>This handles / route</h1>');
});
app.listen(3000);
如果我导航到 localhost:3000/users 页面显示正确的 html 但控制台日志:
- 这处理 /users 路由
- 这处理/路由
如果我导航到 localhost:3000/ 页面显示 html 正确但控制台日志:
- 这处理/路由
- 这处理/路由
【问题讨论】:
-
只需在中间件中执行
console.log(req.url)即可查看发生了什么。您可能会看到 Firefox 和 Chrome 之间的 favicon.ico 缓存差异。但是,如果您添加我提到的日志,它肯定会告诉您。请记住,app.use('/', ...)匹配向您的服务器发出的每一个请求,因此它总是会被命中,除非在它获取请求之前有什么东西。
标签: javascript node.js express http favicon