0

我有一node.js台服务器,express.js到目前为止一切都运行良好,但突然间我遇到了这个非常奇怪的错误:

我对域基本 URL 的请求,这意味着我在浏览器中输入了

http://localhost:9191/

出现在 express 中具有 url 参数/index/hud.html,顺便说一下,这些参数从未在我的代码中的任何地方使用过,因为我没有任何“索引”文件夹。我什至没有html文件,因为我使用jade。我并不完全不知道这个 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: [] }

我也尝试删除浏览器缓存和所有内容(并更改浏览器),但似乎确实以某种方式添加这些参数......有人知道发生了什么吗?

4

1 回答 1

0

好的自动回答:

index.html坐在我的公用文件夹的根目录中。

显然,在发送'/'到 express 的请求处理程序之前请求公共索引文件的请求。这意味着我的'/'处理程序永远不会被调用,因此我无法被告知index.html文件已被提供。

然后,在该索引文件上是一个 iframe 请求index/hud.html(通过搜索 :( )没有找到那个在我的公共文件夹中不存在的 iframe,这一次创建了一个我可以用我的'*'处理程序捕获的快速获取请求,指向/index/hud.html

因此,删除它index.html会使请求遵循正确的路径,而不仅仅是获取 html 文件。

于 2013-06-06T11:04:51.417 回答