有没有办法从快速 4.8.5中的快速静态中间件中排除子目录.
例如,如果我有:
app.use(express.static(__dirname + 'public'));
Run Code Online (Sandbox Code Playgroud)
我的公共目录是这样的:
- public
- css
- images
- scripts
- index.html
- exclude_me
- scripts
- views
- index.html
Run Code Online (Sandbox Code Playgroud)
所以我需要排除最后一个子目录,当用户执行时:
GET /exclude_me
Run Code Online (Sandbox Code Playgroud)
它应该调用我的路由而不是自动返回目录.
我不能因为它依赖于它里面的东西,因为从公开目录只是将其删除公共目录角的应用和exclude_me是另一个角度的应用程序,从获取脚本/ exclude_me /脚本 和从/公/脚本.
我知道这有点令人困惑,但事实并非如此,我不能将其从公共目录中删除,因为它不会再看到公共/脚本需要的东西而且我不能离开它因为我当时无法授权它(所有授权都是在公共/剧本中)
如果有更聪明的方法可以做到这一点,请随时告诉我:)
Riv*_*all 16
您可以添加自己的中间件.这是我做的排除一些文件夹:
app.use('/public', (req, res, next) => {
if (env !== 'development') {
var result = req.url.match(/^\/js\/(maps|src)\/.+\.js$/)
if (result) {
return res.status(403).end('403 Forbidden')
}
}
next()
})
app.use('/public', express.static(path.join(__dirname, '/public')))
Run Code Online (Sandbox Code Playgroud)
通过将正则表达式添加到方法的第一个可选参数中是可能的use.
例如,我不想授予secure文件夹内部public文件夹的访问权限:
var express = require('express');
var app = express();
app.use([/^\/public\/secure($|\/)/, '/public'], __dirname + 'public');
Run Code Online (Sandbox Code Playgroud)
这将允许您访问所有文件,但不能访问文件secure夹中的文件.
您也可以使用它来限制文件扩展名,以.js.map以下结尾的示例文件:
app.use([/(.*)\.js\.map$/, '/public'], __dirname + 'public');
Run Code Online (Sandbox Code Playgroud)
并且您还可以添加多个规则,例如从静态文件夹中忽略secure文件夹和文件的示例.js.map:
app.use([/^\/public\/secure($|\/)/, /(.*)\.js\.map$/, '/public'], __dirname + 'public');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8827 次 |
| 最近记录: |