我有一个node.js
服务器express.js
,到目前为止一切运行良好,但突然间我有一个非常奇怪的错误:
我对域名基本网址的请求,这意味着在我的浏览器中输入了
http://localhost:9191/
出现在express中,因为我没有任何“索引”文件夹,所以我的代码中的任何地方都没有使用url参数/index/hud.html
。我甚至没有html文件,因为我使用的是玉。这个URL并不完全不为我所知(来自旧代码,其他地方),但在此服务器中没有提到。我已经对所有文件进行了大量搜索以检查这一点。
所以这是发生的事情:
'*'
创建请求处理程序,以便我知道发生了什么:处理程序
this.app.get('*', function (req, res) {
console.log(req);
});
req对象(部分):
route: {
path: '*',
method: 'get',
callbacks: [ [Function] ],
keys: [],
regexp: /^(.*)\/?$/i,
params: [ '/index/hud.html' ]
},
params: [ '/index/hud.html' ] }
这意味着我的浏览器想要得到的东西不是我输入的URL,或者可能是明确修改了请求?
然后我为这个网址创建了一个处理程序。我的第一个猜测是将其重定向到'/'
,但它创建了一个无限循环(这意味着我的服务器'/index/hud.html'
与'/'
相同。请注意,此时我搜索了在每个文件中研究过,代码中没有提到这样的路径。
从'/index/hud.html'
抓取的请求与从'/'
处理程序:
this.app.get('/index/hud.html', function (req, res)
{
console.log(req);
});
请求:
route:
{
path: '/index/hud.html',
method: 'get',
callbacks: [ [Function] ],
keys: [],
regexp: /^\/index\/hud\.html\/?$/i,
params: []
},
params: [] }
我还尝试删除浏览器缓存和所有内容(以及更改浏览器),但似乎真的很明确地以某种方式添加这些参数......任何人都知道发生了什么?
答案 0 :(得分:0)
好的自动回答:
我的公共文件夹的根目录中有index.html
。
显然,在转发表达请求处理程序之前,'/'
请求公共索引文件的请求。这意味着永远无法调用我的'/'
处理程序,因此无法通知我已提供index.html
文件。
然后,在那个索引文件上是一个iframe要求index/hud.html
(没找到那个通过搜索:()在我的公共文件夹中不存在,创建这个时候一个快速获取请求我可以抓住我的'*'
处理程序,指向/index/hud.html
因此,删除此index.html
会使请求遵循正确的路径,而不仅仅是获取html文件。