javascript - Express:为什么这个GET请求执行了两次?

标签 javascript node.js http express pug

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

Why is this? How can I fix this?

这是我的代码:

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 - -

app.js:

var publication = require('./routes/publication');
app.use('/publication', publication);

publication.js:

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});
});

最佳答案

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

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

尝试在您的浏览器中禁用网络操作预测。以下是它在 Google Chrome 设置中的样子(Settings -> Show advanced settings...):

Google Chrome network actions prediction

或者您可以在实际点击链接之前尝试验证第一个请求是否已发送,方法是将鼠标悬停在链接上而不是点击它。

关于javascript - Express:为什么这个GET请求执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29049587/

相关文章:

javascript - 点击 url 后 Masonry 不工作

linux - HTTP 请求未响应 404 未找到

http - HTTP 服务器应该如何响应它不希望处理的代理请求?

http - Bing API 请求的 Ajax 授权 header 是什么?

javascript - DoubleClick 广告不适用于 list 文件

javascript - 警告 : failed prop type in React error

javascript - 为什么这个正则表达式会导致无限循环?

javascript - 使用 Jade 包含整个脚本目录?

node.js - 使用来自 emberJs 的参数过滤器进行快速路由

node.js - 顶级等待在最新的 Node.js 中不起作用