代码之家  ›  专栏  ›  技术社区  ›  mrbinky3000

代码点火器控制器被调用两次

  •  4
  • mrbinky3000  · 技术社区  · 16 年前

    完全有可能我在某个地方犯了一个巨大的错误,但出于某种原因,我的控制器被调用了两次。这是打破了Dx_Auth在Chrome上的验证码,但不知何故,Firefox和IE可以处理它。

    问题是,每个控制器被调用的间隔是两毫秒。我使用Log_message()来打印$\u服务器superglobal中的每个键/值对。

    唯一的区别是:

    第一电话

    'HTTP_CACHE_CONTROL' => 'max-age=0'
    'HTTP_ACCEPT' => 'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
    'HTTP_COOKIE' => 'ci_session=a:4:{s:10:"session_id";s:32:"4be9cef4e2cdae468c7443f52a5fb3f2";s:10:"ip_address";s:13:"321.321.321.321";s:10:"user_agent";s:50:"Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+Ap";s:13:"last_activity";s:10:"1282151409";}70b300096c8d40c60a676ac65bcb222c'
    'REMOTE_PORT' => '61828'
    

    第二个电话

    'HTTP_CACHE_CONTROL' => NULL
    'HTTP_ACCEPT' => '*/*'
    'HTTP_COOKIE' => 'ci_session=a:4:{s:10:"session_id";s:32:"a5bb2c98a8ff4438cef3a3fe3d5ff73e";s:10:"ip_address";s:13:"321.321.321.321";s:10:"user_agent";s:50:"Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US)+Ap";s:13:"last_activity";s:10:"1282151734";}4adf1de21f9708d66b3d4bc36d0b0d92'
    'REMOTE_PORT' => '61842'
    

    在CI论坛上已经有一个线程,其他人也有类似的问题,但他的问题最终是间谍软件。我不是这样的。我在几台电脑上试过,但我的访问者都不能注册这个网站。

    你看,dx-auth在第一次调用时将captcha的值存储为ci会话flashdata。第二个调用将擦除flashdata,因此没有人能够获得正确的captcha。

    这是我的访问日志示例

    123.123.123.123 - - [18/Aug/2010:12:31:26 -0500] "GET /welcome HTTP/1.1" 200 3391 "http://somewhere.com/[age" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4"
    123.123.123.123 - - [18/Aug/2010:12:31:27 -0500] "GET /welcome HTTP/1.1" 200 3391 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.126 Safari/533.4"
    

    如你所见,第一个电话似乎是我打来的,第二个电话没有推荐人。

    我认为用于从URI中删除index.php的.htaccess文件有问题。因此,我切换到了“默认”.htaccess重定向,如CI文档中所述。双重负载仍在发生。

    RewriteEngine on
    RewriteCond $1 !^(index\.php|asset|captcha|robots\.txt|favicon\.ico)
    RewriteRule ^(.*)$ /index.php/$1 [L]
    

    我还使用了火狐的“实时HTTP头”插件。看起来只有一个请求被发送,但是Firebug的控制台显示有两个回复正在返回。

    有人知道发生了什么事吗?这件事发生在其他人身上了吗?

    4 回复  |  直到 10 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    请参阅我对类似问题的答复,了解可能导致这种情况的原因,以及如何开始确定确切的问题: Controller actions being called twice --- Php application

        2
  •  0
  •   Jeg Bagus    16 年前

    我也遇到了同样的问题,这让我很生气。 请求实际上来自于火狐。火狐浏览器发送请求两次。 所以这不是编码器点火器侧错误。尝试使用另一个版本的火狐。应该可以解决这个问题。

        3
  •  0
  •   jdd    16 年前

    我遇到了这样的行为,当基于响应将事件与jquery绑定到dom元素上时,忘记了需要在该dom元素上解除绑定旧事件。

        4
  •  0
  •   Richard    10 年前

    我的问题是,这个页面被重新加载到这个元标签上。删除了它,火狐的双重加载停止了。

    <meta http-equiv="Content-Type" content="text/css; charset=utf-8" />
    
    推荐文章