gpt4 book ai didi

node.js - NodeJS Express 模块 : 'dotfile' options no working

转载 作者:太空宇宙 更新时间:2023-11-04 00:58:39 24 4
gpt4 key购买 nike

当使用express.static()来提供静态资源时,我遇到了一个奇怪的问题。具体来说,options 参数的 dotfiles 对象未产生预期的行为。

在明确的文档中指出:

...express.static is based on serve-static, and is responsible for serving the static assets...

此外,它还声称向 express.static() 提供 options 参数应该与serve-static 具有相同的效果:

The optional options object can have the following properties.

  • dotfiles option for serving dotfiles. Possible values are "allow", "deny", and "ignore"; defaults to "ignore".

这是serve-static文档中规定的dotfiles选项应该规定的内容:

  • 'allow' No special treatment for dotfiles.

  • 'deny' Send a 403 for any request for a dotfile.

  • 'ignore' Pretend like the dotfile does not exist and call next().

我能想到的最简洁的例子是下面的代码。看起来,serve-static 提供的资源的行为符合预期,但是 express.static() 在提供相同资源时会忽略这些选项。也就是说,尽管参数 {dotfiles : 'allow'} 被传递给 express.static(),但所有对资源的请求都以 '.' 开头。返回 404 错误。

此问题发生在 Node 版本 v0.10.25、express 版本 2.5.8、在 ubuntu 服务器 14.04.1 LTS 上运行。

var express = require('express');
var app = module.exports = express.createServer();
var finalhandler = require('finalhandler');
var http = require('http');
var serveStatic = require('serve-static');

app.use('/', express.static('public', {
dotfiles : 'allow'
}));

app.listen(3001);

var serve = serveStatic('public', {
dotfiles : 'allow'
});

var server = http.createServer(function(req, res) {
serve(req, res, finalhandler(req, res))
})

server.listen(3002);

我希望serve-static 和express.static 的行为完全相同。我有什么遗漏的吗?或者这是其他人遇到过的问题吗?

最佳答案

您使用的是 Express 2.5.8,您正在查看的文档可能适用于 4.x2.5.8 没有 dotfiles 选项,因为它使用不支持它的 connect 1.x 。您的两个选择是:

  1. 像您在示例中所做的那样引入 serve-static
  2. 升级您的express版本。 2.5.8 即将迎来 3 岁生日。

关于node.js - NodeJS Express 模块 : 'dotfile' options no working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28229989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com