gpt4 book ai didi

node.js - sendfile 有问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:17 27 4
gpt4 key购买 nike

我正在尝试向客户端发送静态 html。

我使用这种方法成功地做到了这一点

app.get('/forgot', function (req, res) {
console.log("Forgot password");

res.sendFile("Forgot.html", {
root: "public/statichtml/"
});
});

但是,如果我使用如下所示的路由,则会向客户端提供 html 文件,但会在“重置”文件夹中查找 html 引用的任何 JS 文件 - 例如重置/config.js:

 app.get('/reset/:token', function (req, res) {

User.findOne({
'local.resetPasswordToken': req.params.token,
'local.resetPasswordExpires': {
$gt: Date.now()
}
}, function (err, user) {
if (!user) {

return res.redirect('/forgot');
}
if (user) {

res.sendFile("Reset.html", {
root: "public/statichtml/"
}, function (err) {
if (err) {
//res.status(err.staus).end()
}
});
}


});
});

有人可以解释一下为什么会发生这种情况吗?

最佳答案

您似乎遇到 <script> 的相对路径问题网页中的标签。这就是发生的事情。

如果您有一个网页 /index.html和一个 <script>像这样的标签:

<script src="reset/configuration.js"></script>

然后,浏览器将看到包含 HTML 页面的路径是 /所以它会将其与您的脚本文件名结合起来,并请求 /reset/configuration.js 。在您的情况下,看起来效果很好。

现在,如果您有一个网页 /reset/1234和该页面中相同的脚本标记,浏览器将看到该页面的路径为 /reset它将与您的脚本文件名结合起来,浏览器将请求 /reset/reset/configuration.js 。这对你不起作用。

解决此问题的方法是不要对脚本标记使用相对路径。相反,添加根级别路径指定,如下所示:

<script src="/reset/configuration.js"></script>

由于此脚本标记 src 以 / 开头,页面中的路径根本不会被使用,浏览器将始终请求 /reset/configuration.js无论页面的路径是什么。

关于node.js - sendfile 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050175/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com