【发布时间】:2019-11-27 19:12:15
【问题描述】:
我正在创建一个使用 JWT 的非常简单的项目。我通过快递服务一切,我没有前端和后端。我想做的是根据用户的授权提供特定的html文件(在https://localhost:3000入口点server.js上服务)
人们不断推荐使用(server.js):
app.use(express.static('static'))
但这当然行不通,因为我可以通过转到 https://localhost:3000/whatever.i.want 访问任何这些文件。
我也试过(server.js):
app.use( '/secret' , authMiddleware, function(req,res){
if(auth){
res.sendFile(__dirname + '/static/secret.html')
}
});
但是在我的样式表和脚本上给出了 404,以及一些奇怪的 MIME 类型错误
拒绝将https://localhost:3000/script.js 作为脚本执行,因为给出了“X-Content-Type: nosniff”,并且它的 Content-Type 不是脚本 MIME 类型。
如果我添加它会起作用:
app.get( '/styles.css' , function(req,res){
res.sendFile(__dirname + '/static/styles.css')
});
app.get( '/script.js' , function(req,res){
res.sendFile(__dirname + '/static/script.js')
});
但是我真的必须为我使用的每一个样式表和脚本都这样做吗?一定有更好的办法!!!
1.) 人们这样做的最佳方式是什么?具体来说,是否可以在不使用前端并从后端提供所有静态文件的情况下创建授权的网络应用程序?
2.) 您的静态目录是否必须可公开访问?这意味着您只能在某些端点上施加授权约束,然后使用调用这些端点的脚本文件?这仍然允许您查看基本 HTML,而不是 API 调用的任何结果。这实际上有效但很恶心。
文件系统
server.js
/static
/blah.html
/secret.html
/secret.css
/secret.js
【问题讨论】:
标签: javascript node.js express web backend