V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mitoop
V2EX  ›  问与答

单次请求 chrome 会触发两次 不得其解

  •  
  •   mitoop · 2017-02-24 22:17:14 +08:00 · 7229 次点击
    这是一个创建于 2861 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 调试程序时候,请求一个方法,但是日志里记录总会打印两次 直接在控制器里做日志然后返回 依然如此。语言是 PHP.

    • stackoverflow 类似问题: stackoverflow 传送门

    • 但是我的很明显不是 icon 或者 src=""这样的问题 因为调试时候 直接就返回 不加载这些,插件的原因也尝试了,无痕模式依然如此,在 Safari 和 Firefox 下是正常的。很奇怪。求赐教

    26 条回复    2018-04-03 16:58:28 +08:00
    mitoop
        1
    mitoop  
    OP
       2017-02-24 22:22:12 +08:00
    求不沉
    qgy18
        2
    qgy18  
       2017-02-24 23:20:06 +08:00 via iPhone
    禁用所有扩展再试试呢?
    indooorsman
        3
    indooorsman  
       2017-02-24 23:36:01 +08:00 via Android
    贴代码和调试截图啊………
    hxsf
        4
    hxsf  
       2017-02-24 23:37:52 +08:00
    页面预加载功能导致的 ? 看看其他页面是不是也被请求了
    nfroot
        5
    nfroot  
       2017-02-24 23:38:22 +08:00
    之前在 cnblogs 也看到这个问题了,是浏览器 BUG
    nfroot
        6
    nfroot  
       2017-02-24 23:39:24 +08:00
    忘记说了,这样的问题出在 30X 状态码的页面(会 2 次访问这个 URL ,尽管 30X 指向的 URL 是其他地址)
    nfroot
        7
    nfroot  
       2017-02-24 23:40:40 +08:00
    随手搜了一下 就是这个了

    http://www.cnblogs.com/lyzg/p/6237841.html
    xiaoz
        8
    xiaoz  
       2017-02-25 00:03:59 +08:00 via iPhone
    是不是你鼠标坏了?
    mitoop
        9
    mitoop  
    OP
       2017-02-25 01:19:52 +08:00
    @qgy18 3Q Jerry Qu 尝试过了 在同事电脑也试了下 目测 chrome 要背这个锅
    mitoop
        10
    mitoop  
    OP
       2017-02-25 01:21:21 +08:00
    @indooorsman 好吧 这个似乎不用贴截图吧 因为问题症状很明朗啊
    mitoop
        11
    mitoop  
    OP
       2017-02-25 01:22:22 +08:00
    @hxsf 3Q 之前有看到这个说法 不是很明白
    mitoop
        12
    mitoop  
    OP
       2017-02-25 01:27:35 +08:00
    mitoop
        13
    mitoop  
    OP
       2017-02-25 01:29:07 +08:00
    @xiaoz Big 黑色脸.jpg 这种错误不会的。
    Felldeadbird
        15
    Felldeadbird  
       2017-02-25 07:11:14 +08:00 via iPhone
    试下在源码默认访问页面看看是否触发 2 次访问。不知道源码默认是什么?当前页面 ctrl + u
    一般这个现象可能是 伪静态没区分好 不存在的资源。浏览器在资源不存在时直接访问了程序。正确的应该是返回 404 状态。
    Felldeadbird
        16
    Felldeadbird  
       2017-02-25 07:11:51 +08:00 via iPhone
    源码模式…不是源码默认。手机输入法打错了
    solarsolo
        17
    solarsolo  
       2017-02-25 12:28:45 +08:00 via iPad
    我记得开 f12 的网络调试就会发两次,貌似在某个版本修复了
    loy6491
        18
    loy6491  
       2017-02-25 13:21:11 +08:00 via iPhone
    是在地址栏输入地址了吗, chrome 会提前请求一次以加快访问速度。这个做 web 应该都知道吧,不知道你是不是这个问题
    mitoop
        19
    mitoop  
    OP
       2017-02-27 13:22:36 +08:00
    @Felldeadbird 直接访问的 action 没有到伪静态那一步 我晚上再试试
    mitoop
        20
    mitoop  
    OP
       2017-02-27 13:23:05 +08:00
    @solarsolo 试了下 关闭调试 还是两次
    mitoop
        21
    mitoop  
    OP
       2017-02-27 13:23:25 +08:00
    @loy6491 地址 在地址栏里 就手动刷新一下
    loy6491
        22
    loy6491  
       2017-02-27 13:31:14 +08:00
    @mitoop 快捷键刷新( F5 或 ⌘R )会请求两次么
    mitoop
        23
    mitoop  
    OP
       2017-02-27 17:20:36 +08:00
    @Felldeadbird @hxsf @indooorsman @loy6491 @nfroot @qgy18 @solarsolo @xiaoz 问题还是 favicon.ico 的事 即使没有加载到页面 chrome 还会去请求 favicon.ico 文件 导致两次记录的问题 本地加了 favicon.ico 这个文件 正常了
    mitoop
        24
    mitoop  
    OP
       2017-02-27 17:21:46 +08:00
    之前粗心了 以为直接到 action 不会去请求 favicon.ico 文件 network 下是有的 只有 chrome 会有这种情况 Safari 和 Firefox 不会。
    sn01615
        25
    sn01615  
       2017-12-10 20:43:17 +08:00
    是返回的数据长度太小了~
    zohner
        26
    zohner  
       2018-04-03 16:58:28 +08:00
    百度搜到这个帖,楼主解决了么,我今天也遇到这个问题,很简单的代码
    ```
    app.get('/webhooks', function(req, res){
    console.log('d')
    res.header('Cache-Control', 'no-cache, no-store, must-revalidate'); // HTTP 1.1
    res.header('Pragma', 'no-cache') // HTTP 1.0
    res.header('Expires', '0'); // Proxies
    res.send("deploy finish")
    })
    ```
    在 chrome 刷新页面都会执行两次,在 firefox 就正常
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5589 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 08:14 · PVG 16:14 · LAX 00:14 · JFK 03:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.