浏览器(或节点?)自动向http请求添加参数

时间:2013-06-06 10:51:02

标签: javascript node.js express

我有一个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: [] }

我还尝试删除浏览器缓存和所有内容(以及更改浏览器),但似乎真的很明确地以某种方式添加这些参数......任何人都知道发生了什么?

1 个答案:

答案 0 :(得分:0)

好的自动回答:

我的公共文件夹的根目录中有index.html

显然,在转发表达请求处理程序之前,'/'请求公共索引文件的请求。这意味着永远无法调用我的'/'处理程序,因此无法通知我已提供index.html文件。

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

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