链接的文件不公开时sendFile的替代方法
我正在做一个节点项目,我揭露我的公共文件夹,如:
app.use(express.static(path.join(__dirname, '/public')))
所以现在,我所有的公共文件都可以通过localhost:8080/*
我还创build了一个名为“views”的文件夹,我保存私人的意见,与他们关联的JavaScript和CSS文件。 他们是私人的意见,所以我不希望任何用户访问它们。
正如我有HTML链接我的CSS文件和JavaScript,当浏览器尝试GET,它说“找不到”,因为它们不在公用文件夹中。
我发送HTML作为sendFile在快递路线。
有没有办法把所有的文件放在公共文件夹中,然后保护它们不被公共用户访问? 或者有没有其他的sendFile,所以文件是本地呈现,它不需要请求的CSS和JavaScript文件
先谢谢你
意见在技术上是私人的。 因为它们呈现在服务器端,而不是由访问者直接访问。
但是,你通常不希望像Javascript,CSS和视图的东西是私人的。 无论如何,用户都会看到它们。 将Node.js视图设置为private的唯一原因是它们需要先由Node.js呈现,然后再发送给用户。
如果你有私人文件,你可能想要做同样的事情。
否则,只需将它们放在/public
文件夹。 你不应该隐藏你的JS / CSS代码中的秘密。
编辑(以下评论):
你有几个方法来做到这一点。
要么你build立一个包含所有必要的HTML /视图 – CSS – JS的唯一的响应。
render('view.ejs', { css: 'body { color: blue }' })
您需要将该variables渲染到您的视图中,就像您可能已经在使用其他视图一样。
您可能还想从文件中读取它:
fs.readFile(`${__dirname}/css/style.css`, (error, styles) => { ... }
或者你分别处理每个文件请求:
Node.js – 外部JS和CSS文件(只是使用node.js不表示)
(如果你使用Node.js视图,只需渲染这些而不是HTML文件)