Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Chrome发送两个http请求,而Firefox发送一个?_Javascript_Node.js_Express_Http_Favicon - Fatal编程技术网

Javascript 为什么Chrome发送两个http请求,而Firefox发送一个?

Javascript 为什么Chrome发送两个http请求,而Firefox发送一个?,javascript,node.js,express,http,favicon,Javascript,Node.js,Express,Http,Favicon,编辑:所以第二个回答肯定是favicon.ico的问题,但为什么这会发生在chrome而不是firefox上 原件: 我正在学习node.js的express并练习中间件的路由。我的问题是“/”路由正在通过,即使我没有发送请求,也没有调用next();在它之前的中间件中。此外,当我向“/”路由发送请求时,它会发送双重响应。它在chrome而不是firefox中实现了这一点,那么有人能解释一下区别吗 const express = require('express'); const app =

编辑:所以第二个回答肯定是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);
const express=require('express');
常量app=express();
应用程序使用('/users',(请求、恢复、下一步)=>{
log(“此句柄/用户路由”);
res.send(“此句柄/用户路由”);
});
应用程序使用(“/”,(请求、恢复、下一步)=>{
console.log('This handles/route');
res.send(“此句柄/路由”);
});
app.listen(3000);
如果导航到localhost:3000/users,该页面将显示正确的html,但控制台会记录:

  • 这将处理/用户的路由
  • 这条路线
如果导航到localhost:3000/页面将显示正确的html,但控制台会记录:

  • 这条路线
  • 这条路线

默认情况下,Chrome将请求网站favicon.ico。像这样:


只需在中间件中执行
console.log(req.url)
,就可以看到发生了什么。您可能会看到Firefox和Chrome之间favicon.ico的缓存差异。但是,如果你添加我提到的日志,它肯定会告诉你。请记住,
app.use(“/”,…)
匹配向您的服务器发出的每个请求,因此它将始终被命中,除非在它捕获请求之前有什么东西。请确保始终描述您发布的链接指向何处<代码>“在此处输入图像描述”是不够的^^