当前位置: 首页 > 面试题库 >

表示浏览器发出请求时两次调用的中间件函数

利永年
2023-03-14
问题内容

下面是我的nodejs代码

const express = require('express');

const app = express();

app.use('/', (req, res, next) => {
    console.log("In interceptor");
    next();
});

app.use('/users', (req, res, next) => {
    console.log('In /users middleware');
    res.send('<h1>From "/users" handler </h1>');
});

app.use('/', (req, res, next) => {
    console.log("Default handler");
    res.send('<h1>From default handler</h1>');
});

app.listen(3000);

从浏览器发出请求时的控制台输出(Chrome和Edge)

http://localhost:3000
******************
In interceptor
Default handler
In interceptor
Default handler
******************

http://localhost:3000/users
******************
In interceptor
In /users middleware
In interceptor
Default handler
******************

但是当使用发出请求时curl,我看不到多个调用

curl http://localhost:3000
******************
In interceptor
Default handler
******************

curl http://localhost:3000/users
******************
In interceptor
In /users middleware
******************

有人可以解释为什么从浏览器发出请求时多次调用中间件功能吗?


问题答案:

从浏览器加载页面时看到多个请求的常见原因是以下两种情况之一:

  1. 浏览器将自动请求favicon.ico文件。
  2. 浏览器尝试从HTML文件(脚本文件,图像,CSS文件等)加载某些资源。

通过添加以下内容,您可以确切地看到每个请求的目的:

console.log(req.url);

您的中间件。



 类似资料:
  • 问题内容: HTTP请求的标头中是否有任何内容可以区分给定客户端的AJAX调用和直接浏览器请求?用户代理字符串通常是否相同? 问题答案: 如果您使用Prototype,jQuery,Mootools或YUI,则应该找到一个 X-Requested-With:XMLHttpRequest 标头,它将为您解决问题。应该可以在其他库中插入任何您喜欢的标头。 在最低级别上,给定XMLHttpRequest

  • 问题内容: AJAX请求和直接浏览器请求之间有什么区别(就如何调用和加载网页而言)? 换句话说,我的意思是:服务器直接请求与客户端请求(由浏览器启动)的处理方式是否有所不同? 问题答案: 就服务器而言,AJAX请求 与 “正常”浏览器请求 相同 ,除了可能略有不同的HTTP标头之外。例如chrome发送: 我不知道如果这头标准化与否,或者如果它在每一个浏览器不同,甚至包括 所有 在每个浏览器。 编

  • 问题内容: 在服务器回答请求之前,浏览器需要等待多长时间才能显示错误?这次可以无限吗? 问题答案: 如果使用的是jQuery $ .ajax调用,则可以设置timeout属性以控制请求以超时状态返回之前的时间。超时设置为毫秒,因此只需将其设置为很高的值即可。您也可以将其设置为0(表示“无限”),但我认为您应该设置一个较高的值。 注意:“无限制” 实际上是默认设置,但大多数浏览器都有默认超时值。 当

  • 问题内容: 我是nodejs和browserify的新手。我从这个链接开始。 我有文件main.js包含此代码 现在,我使用npm安装uniq模块: 然后,我使用browserify命令将从main.js开始的所有必需模块捆绑到一个名为bundle.js的文件中: 生成的文件如下所示: 将bundle.js文件包含到我的index.htm页面中之后,如何调用logData函数? 问题答案: 默认情

  • 在我的php文件中,我有以下内容来创建一个带有FPDF库的PDF: 但是请求是响应这个,而不是打开一个保存对话框来保存我的PDF。 %PDF-1.3 3 0 obj<>endobj 4 0 obj<>stream x 3 R@2π35 W(çR qπw 3 t04多30 pispéz*[(hx·ääää+çó)·(j*dé7 w endstream endobj 1 0 obj /xobject<

  • 问题内容: 示例:转到Facebook墙,滚动页面的末尾,Facebook将 异步 加载更多墙帖。或者,只需单击墙上的帖子中的图片即可。图像对话框(带有注释和较大图像)也将 异步 加载。(您可以使用firebug查看GET请求)。 但是通过查看和Firefox标签,您会看到加载指示器,就像发生回发时一样。 我知道可以通过使用an 并更改其src 来实现。就像iGoogle一样。但是我不确定Face