我已经用NodeJS编写了一个代码,当我点击URL时,我需要服务器通过三个中间件功能验证,Cookie和日志记录。发生这种情况,但是控制台被打印了两次。你能帮我找出原因吗?
var express = require('express');
var app = express();
var router = require('express').Router();
/* Add the middleware to express app */
app.use (function authentication(req,res,next){
if(req.method === 'GET'){
console.log("Inside Authentication.js")
next(); // If your don't use next(), the mmand won't go to the next function.
}
else{
console.log("Inside else Authentication.js")
}
})
app.use( function cookies(req,res,next){
if (req.method === 'GET'){
console.log("Inside cookies.js")
next();
}
else
{
console.log("Inside else cookies.js")
}
})
app.use( function logging(req,res,next){
if(req.method === 'GET'){
console.log("Inside Logging.js");
next();
}
else{
console.log("Inside else of Logging.js");
}
})
app.use(function(req,res) {
res.send('Hello there !');
});
app.listen(8080);
o / p-
E:\NodeJSProject\middleware>node app.js
Inside Authentication.js
Inside cookies.js
Inside Logging.js
Inside Authentication.js
Inside cookies.js
Inside Logging.js
答案 0 :(得分:1)
您的浏览器将执行飞行前CORS请求(即OPTION
请求),以查看是否允许您执行请求。
从您的角度来看,它只是一个请求,但是浏览器正在执行两个请求,而您的Express服务器正在完全执行两个请求。
鉴于您正在使用express
,可以使用中间件专门处理这些请求。
如果您想完全避免CORS请求,则必须从相同的主机,端口和协议为您的网站和API提供服务。
You can read more about CORS here,或者您也可以搜索Stack-内容丰富的帖子。