首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与sendfile有问题

与sendfile有问题
EN

Stack Overflow用户
提问于 2016-03-17 01:38:36
回答 1查看 76关注 0票数 1

我试图向客户端发送静态html。

我正在使用这个方法成功地完成这个任务。

代码语言:javascript
复制
app.get('/forgot', function (req, res) {
        console.log("Forgot password");

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

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

代码语言:javascript
复制
 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()
                    }
                });
            }


        });
    });

有人能解释一下为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-17 07:17:49

您的网页中的<script>标记似乎存在相对路径问题。下面是发生的事。

如果您有一个名为/index.html的网页和一个类似于此的<script>标记:

代码语言:javascript
复制
<script src="reset/configuration.js"></script>

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

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

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

代码语言:javascript
复制
<script src="/reset/configuration.js"></script>

由于此脚本标记src以/开头,因此将根本不使用来自页面的路径,并且无论页面的路径是什么,浏览器都将始终请求/reset/configuration.js

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36050175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档