对从AJAX发送到我的Express服务器的请求路径感到困惑

Confused about request path being sent to my Express server from AJAX

本文关键字:路径 请求 Express AJAX 我的 对从 服务器      更新时间:2023-09-26

我有Node.js Express服务器的基本设置

我正在尝试使用res.sendFile提供html文件,使用以下路由处理程序:

router.get('/:run_id/:test_num',function(req,res,next){
    var runId = req.params.run_id;
    var testNum = req.params.test_num;
    res.sendFile(path.resolve('results',runId,testNum),{
        maxAge:'58h'
    });
});

在我的app.js文件中,我有一个中间件

app.use('/results', require('./routes/results'));

问题是请求的路由是这样的:

  pathname: '/results/results/1450830953375/test6.txt',
  path: '/results/results/1450830953375/test6.txt',
  href: '/results/results/1450830953375/test6.txt' 

所以问题是它是/results/results/而不仅仅是/results

我使用的是RequireJS,包含要请求的文件数据的模块如下所示:

    define('SumanTestFiles',function(){
            return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]);
     });

然后我循环遍历每个文件路径,并使用jQuery/AAJAX:从服务器请求它

define(['SumanTestFiles'],function(stf){
    stf.forEach(function (testPath) {
        $.get(testPath).done(function (msg) {...

因此,您可以看到testPaths没有被篡改,毫无疑问,它们只是"results/1450833034034/test5.txt"等。

所以我的问题是,为什么路径显示在我的服务器上,路径中有两个相邻的"results"字符串实例?

这没有多大意义,因为请求应该只是

/results/1450830953375/test6.txt

不是

/results/results/1450830953375/test6.txt

有人有什么想法吗?感谢

这对我来说是新的,因为我对web开发相当陌生

简单的答案是:

  define('SumanTestFiles',function(){
            return new Object(["results/1450830340344/test5.txt","results/1450830340344/test6.txt"]);
     });

我需要做这个

  define('SumanTestFiles',function(){
            return new Object(["/results/1450830340344/test5.txt","/results/1450830340344/test6.txt"]);
     });

否则,我的服务器的AJAX请求路径将是相对于搜索栏中的URL的,而不是绝对的。天啊,真是令人困惑。