新人求助,点击对应的连接请求后并不是输出相应的请求路径名.
发布于 11 年前 作者 zansbang 5144 次浏览 最后一次编辑是 8 年前

alt bug图

一个很原始的路由判断页面,判断了4个请求路径: ‘/’,’/insert’,’/update’,’/delete’ 分别点击相应的链接会在控制台输出点击请求的路径名. 但是有时候会出现一个情况,点击了对应的请求后不是立马输出请求路径,反而会出现其他路径的请求名,或者是上一次链接的请求路径名! 难道真的是因为 /favicon.ico 这个的原因么?

26 回复

点删除后控制台输出的是 /favicon.ico ,之后点首页输出了两次分别是 ‘/’ , ‘/delete’ .我有为 ‘/favicon.ico’ 做请求判断啊,这是为什么呢.

var http = require(‘http’), url = require(‘url’);

http.createServer(function(request,response){
     if(url.parse(request.url).pathname ==="/"){
     
        console.log(url.parse(request.url).pathname);
        
     }else if(url.parse(request.url).pathname ==="/insert"){
     
        console.log(url.parse(request.url).pathname);
        
     }else if(url.parse(request.url).pathname ==="/update"){
     
        console.log(url.parse(request.url).pathname);
        
     }else if(url.parse(request.url).pathname ==="/delete"){
     
        console.log(url.parse(request.url).pathname);
        
     }else{
     
        console.log(url.parse(request.url).pathname);
        
     }
}).listen(8888);

html输出代码省略了..

alt bug 再来一张… 这是为什么啊~ 页面请求最多本身+favicon这两个啊~

浏览器自动加的, Chrome 会加

@jiyinyiyong 是指 /favicon.ico 这个请求吗?

@jiyinyiyong 我知道默认访问一个路径带2次请求,只是我不明白为什么点击相应的链接输出的不是对应的路径这个问题~~~

@jiyinyiyong 图片里我点了 ‘/delete’ 这个链接,控制台输出的不是 ‘/delete’,只有 ‘favicon.ico’,之后点首页输出了 ‘/’ 和 ‘/delete’ ,这不是坑爹么!

@jiyinyiyong 难道还有阻塞这么一说…

继续请求帮助…

不太明白…这有什么问题…本来就应该如此… favicon 的原因楼上已经回答了 至于 / 因为你点首页的时候访问了一次啊…

话说,nodejs 是异步的.这种输出本来就可能会发生,不按照顺序来,如果你要按照顺序来要不用fs.sync,要不在callback里面调用.

@youxiachai 你看我点 删除 的时候,出现的是 ‘/favicon.ico’ 而不是对应的 ‘/delete’ 路径~

不考虑 /favicon.ico 的请求,你的后台请求正常吗?

/favicon.ico 就是个图像请求,可忽略。

后台是指? 目前是没有后台,只是点击链接后反馈相应路径. 基本代码都在#2,除了html的输出. 问题还是在我点的链接是 ‘/delete’,控制台会输出 ‘/home’,当我点击’/home’的时候控制台会输出’/delete’ 或者接着输出 '/home’ 诡异的地方啊~

访问一次却有多次请求,而且请求的路径是不确定的…坑爹啊!

继续求助~

在chrome下用开发者工具看请求次数,也只请求了一个页面~但nodejs就愣是执行了两次…

在使用chrome+fiddler的情况下,这种情况消失了…消失了…!! ie下也没出现这情况!! 坑爹啊!

用 node-inspector 加断点调试一下。

或許該把你的code發出來, 這樣大家才知道怎麼幫你

app.js

var http = require('http'),
    url = require('url'),
    fs = require("fs");

http.createServer(function(req, res){
    var pathname = url.parse(req.url).pathname;
    console.log(pathname);

    fs.readFile("index.html", function(err, data) {
        res.writeHead(200, { "Content-Type": "text/html" });
        res.end(data);
    });
}).listen(8888);

index.html

<a href="/index">index</a>
<a href="/insert">insert</a>
<a href="/update">update</a>
<a href="/delete">delete</a>

跳转的时候也访问了’/'了吧

点一个链接一般不会跳转2次吧. 而且有时候是点了 ‘/’ 后出现其他的路径…

code 在 #2 啊~

问题算是解决了. 我猜测原因是fiddle的全局代理用的端口是8888,而我的服务器监听端口也是8888造成的.

回到顶部