我有 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/AJAX 从服务器请求它:
define(['SumanTestFiles'],function(stf){
stf.forEach(function (testPath) {
$.get(testPath).done(function (msg) {...
所以你可以看到 testPaths 没有被篡改,它们毫无疑问只是“results/1450830340344/test5.txt”,等等。
所以我的问题是,为什么路径显示在我的服务器上,路径中有两个相邻的“结果”字符串实例?
这没有多大意义,因为请求应该是
/results/1450830953375/test6.txt
不是
/results/results/1450830953375/test6.txt
有人有什么想法吗?谢谢
最佳答案
这对我来说是新的,因为我对网络开发相当陌生
简短的答案是,而不是这样:
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,而不是绝对路径。天哪,这令人困惑。
关于javascript - 对从 AJAX 发送到我的 Express 服务器的请求路径感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426879/