我正在做一个节点项目,我公开我的公共文件夹,如:
app.use(express.static(path.join(__dirname, '/public')))
现在,我的所有公共文件都可以通过localhost:8080/*
我还创建了一个名为" views"的文件夹。我保存私人视图,javascript和与他们相关的CSS文件。它们是私人观点,因此我不希望任何用户访问它们。
由于我的html链接了我的css文件和javascript,当浏览器尝试获取它们时,它会显示" not found"因为它们不在公共文件夹中。
我在快递路线中将html作为sendFile发送。
有没有办法将所有文件放在公用文件夹中,然后保护它们不被公共用户访问?或者有sendFile的替代方案,因此文件在本地呈现,并且它不需要请求css和javascript文件
提前谢谢
答案 0 :(得分:1)
视图技术上私有。因为它们是在服务器端呈现的,并且访问者无法直接访问它们。
但是你通常不想要像Javascript,CSS这样的东西,也不想要隐私。用户无论如何都会看到它们。将Node.js视图设为私有的唯一原因是Node.js需要在将它们发送给用户之前呈现它们。
如果您有私人文件,则可能需要执行相同操作。
否则,只需将它们放在/public
文件夹中即可。你不应该在JS / CSS代码中隐藏任何秘密。
修改(以下评论):
你有几种方法可以做到这一点。
要么构建一个包含所有必要HTML /视图的唯一响应 - CSS - JS。
render('view.ejs', { css: 'body { color: blue }' })
您需要将变量渲染到视图中,就像您可能已经在使用其他视图一样。
您可能还想从文件中读取它:
fs.readFile(`${__dirname}/css/style.css`, (error, styles) => { ... }
或者您单独处理每个文件请求:
Node.js - external JS and CSS files (just using node.js not express)
(如果您使用Node.js视图只是渲染这些视图而不是HTML文件)