Javascript Express:为什么这个GET请求要执行两次?

Javascript Express:为什么这个GET请求要执行两次?,javascript,node.js,http,express,pug,Javascript,Node.js,Http,Express,Pug,我有一些用Jade写的代码,里面有一个链接。链接的目的地由Jade生成。单击链接时,我从控制台注意到GET请求被执行了两次 为什么会这样?我怎样才能解决这个问题 这是我的密码: Jade文件: ul.media-list each paper in paperList div.panel.panel-default div.panel-body li.media div.med

我有一些用Jade写的代码,里面有一个链接。链接的目的地由Jade生成。单击链接时,我从控制台注意到GET请求被执行了两次

为什么会这样?我怎样才能解决这个问题

这是我的密码:

Jade文件:

ul.media-list
    each paper in paperList
        div.panel.panel-default
            div.panel-body
                li.media
                    div.media-left.media-middle
                        a(href='/publication/view/#{paper.id}')
                            | Some image
                    div.media-body
                        div.btn-group(role='group')
                            //!!! When this link is being clicked, GET is executed twice !!!
                            a.btn.btn-default(href='/publication/view/#{paper.id}')
                                | View
GET /publication/view/123 200 490ms - 5623
GET /publication/view/123 304 458ms - -
var publication = require('./routes/publication');
app.use('/publication', publication);
var express = require('express');
var router = express.Router();

router.get('/view/:id', function (req, res) {
    var data;
    //Some database functions here
    //Just an example
    res.render('publication', {someData: data});
});
控制台:

ul.media-list
    each paper in paperList
        div.panel.panel-default
            div.panel-body
                li.media
                    div.media-left.media-middle
                        a(href='/publication/view/#{paper.id}')
                            | Some image
                    div.media-body
                        div.btn-group(role='group')
                            //!!! When this link is being clicked, GET is executed twice !!!
                            a.btn.btn-default(href='/publication/view/#{paper.id}')
                                | View
GET /publication/view/123 200 490ms - 5623
GET /publication/view/123 304 458ms - -
var publication = require('./routes/publication');
app.use('/publication', publication);
var express = require('express');
var router = express.Router();

router.get('/view/:id', function (req, res) {
    var data;
    //Some database functions here
    //Just an example
    res.render('publication', {someData: data});
});
app.js:

ul.media-list
    each paper in paperList
        div.panel.panel-default
            div.panel-body
                li.media
                    div.media-left.media-middle
                        a(href='/publication/view/#{paper.id}')
                            | Some image
                    div.media-body
                        div.btn-group(role='group')
                            //!!! When this link is being clicked, GET is executed twice !!!
                            a.btn.btn-default(href='/publication/view/#{paper.id}')
                                | View
GET /publication/view/123 200 490ms - 5623
GET /publication/view/123 304 458ms - -
var publication = require('./routes/publication');
app.use('/publication', publication);
var express = require('express');
var router = express.Router();

router.get('/view/:id', function (req, res) {
    var data;
    //Some database functions here
    //Just an example
    res.render('publication', {someData: data});
});
publication.js:

ul.media-list
    each paper in paperList
        div.panel.panel-default
            div.panel-body
                li.media
                    div.media-left.media-middle
                        a(href='/publication/view/#{paper.id}')
                            | Some image
                    div.media-body
                        div.btn-group(role='group')
                            //!!! When this link is being clicked, GET is executed twice !!!
                            a.btn.btn-default(href='/publication/view/#{paper.id}')
                                | View
GET /publication/view/123 200 490ms - 5623
GET /publication/view/123 304 458ms - -
var publication = require('./routes/publication');
app.use('/publication', publication);
var express = require('express');
var router = express.Router();

router.get('/view/:id', function (req, res) {
    var data;
    //Some database functions here
    //Just an example
    res.render('publication', {someData: data});
});

这只是一个假设,但看起来你的浏览器正在使用某种预测算法来预加载你的链接,甚至在你点击它们之前

Express.js用
304 Not Modified
response响应第二个响应,这表明它是用有效值发送的,以验证先前缓存的响应

尝试在浏览器中禁用网络操作。下面是它在Google Chrome设置中的外观(
settings
->
Show advanced settings…
):


或者,您可以将鼠标悬停在链接上,但不点击链接,从而在实际点击链接之前验证是否发送了第一个请求。

Firefox或explorer中未出现Chrome问题

媒体是否与媒体主体重叠?在这种情况下,两个链接都可能触发单击事件。否,媒体左侧和媒体正文是两个单独的div。我刚刚签入生成的HTML。路由器在哪里定义?@ExplosionPills请查看我对
publication.js
@JNevens的编辑。您可以使用一些虚拟paper.id来执行curl请求
curl{baseURL}/publication/view/#{paper.id}
,将问题缩小到前端或后端。还可以尝试记录
request.url
,在某些情况下,会发出一个额外的请求来获取favicon。我认为现在可以将此选项称为“使用预测服务更快地加载页面”?请使用注释提问