node.js - 在 Express 中使用 * 路由时,从不存在的静态内容发送 404 header

标签 node.js express

我有这样的 Express 应用程序。

var express = require('express');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(app.router);

app.get('*', function(res,req) {
    req.render('index', {title: "Title"});
});

http.createServer(app).listen(app.get('port'), function () {
    console.log('Express server listening on port ' + app.get('port'));
});

因为使用 app.get('*') 请求不存在的静态文件,响应会渲染 index.ejs 文件,而不是错误 404。

有没有办法在没有路由附加条件的情况下修复它?

最佳答案

只需添加如下内容:

app.get(/\/(js|css|img)\/.*/, function (req, res) {
  res.send(404);
});

app.get('*')之前。静态中间件尚未匹配的任何对 /js 的请求都会引用不存在的文件。

关于node.js - 在 Express 中使用 * 路由时,从不存在的静态内容发送 404 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766552/

相关文章:

node.js - 使用 Node.js 进行 AES192 加密

node.js - 为什么 npm install 会因 node-sass 相关错误而失败?

node.js - include 语句对性能的影响有多大?

node.js - 更改后重新处理请求

node.js - 在 travis ci 上构建 webpack

node.js - Node JS 存储过程字段值返回为未定义

javascript - 数字中的前导和尾随零

node.js - 如何通过 Express Route 使用 Mongoose-Crate 存储文件

node.js - 我将如何测试在 express 中使用 mocha/chai/superagent 发送路由?

javascript - Cookies 和 SameSite + Secure - ExpressJS