我试图向客户端发送静态html。
我正在使用这个方法成功地完成这个任务。
app.get('/forgot', function (req, res) {
console.log("Forgot password");
res.sendFile("Forgot.html", {
root: "public/statichtml/"
});
});但是,如果我使用下面这样的路由,则会向客户端提供html文件,但是html引用的任何JS文件都会在“reset”文件夹中查找,例如reset/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()
}
});
}
});
});有人能解释一下为什么会发生这种事吗?
发布于 2016-03-17 07:17:49
您的网页中的<script>标记似乎存在相对路径问题。下面是发生的事。
如果您有一个名为/index.html的网页和一个类似于此的<script>标记:
<script src="reset/configuration.js"></script>然后,浏览器将看到包含的/页面上的路径是/reset/configuration.js,因此它会将其与脚本文件名结合起来,并请求/reset/configuration.js。在您的情况下,这看起来很好。
现在,如果您有一个/reset/1234的网页和该页面中相同的脚本标记,浏览器将看到该页面有一个/reset路径,并将其与您的脚本文件名相结合,浏览器将请求/reset/reset/configuration.js。对你不起作用。
解决这个问题的方法是不对脚本标记使用相对路径。相反,添加根级路径指定,如下所示:
<script src="/reset/configuration.js"></script>由于此脚本标记src以/开头,因此将根本不使用来自页面的路径,并且无论页面的路径是什么,浏览器都将始终请求/reset/configuration.js。
https://stackoverflow.com/questions/36050175
复制相似问题