Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.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
Node.js 防止直接访问节点中的目录&;快速应用_Node.js_Express - Fatal编程技术网

Node.js 防止直接访问节点中的目录&;快速应用

Node.js 防止直接访问节点中的目录&;快速应用,node.js,express,Node.js,Express,在我的express应用程序中,我有一个名为media In/public的目录,我想限制对它的访问(以及它的子目录),重定向或显示404 我怎样才能做到呢? 提前感谢。如果您在express.static中间件中定义了public文件夹,如下所示: app.use(express.static('public')) 所有public的内容都是公开的,可以通过url/filepath/filename访问 限制访问媒体文件夹的最简单方法是将媒体文件夹移动到公共文件夹之外。我找到了自己问题的答案

在我的express应用程序中,我有一个名为media In/public的目录,我想限制对它的访问(以及它的子目录),重定向或显示404

我怎样才能做到呢?
提前感谢。

如果您在
express.static
中间件中定义了
public
文件夹,如下所示:

app.use(express.static('public'))

所有
public的
内容都是公开的,可以通过url
/filepath/filename
访问


限制访问
媒体
文件夹的最简单方法是将
媒体
文件夹移动到
公共
文件夹之外。

我找到了自己问题的答案

app.all('/media/*', (req,res, next) {
    res.status(403).send({
       message: 'Access Forbidden'
    });
    // or whatever
});
app.use('/media',express.static(path.join(__dirname, 'media')));

尝试在
静态
之前添加一个中间件(使其位于
静态
之前),然后使用指向要限制访问的目录的路由执行任何操作。这会破坏其公开的目的。如果您限制访问,则名称不应为
public
。Francisco Mateo那么在这种情况下我能做什么?我可以将我的媒体内容移出公共空间并更改上传路径,但我如何限制对它的访问?谢谢,我已经得到了。你能不能给我一点帮助,告诉我如何在公共场所以外进行限制?如果这可能是一个愚蠢的问题,我也很抱歉,但是我在任何地方都找不到解决方案。你需要在(req,res,next)之后加上一个“胖箭头”才能起作用。