Контроллеры CodeIgniter вызываются дважды - PullRequest
4 голосов
/ 19 августа 2010

Вполне возможно, что я где-то допустил огромную ошибку, но по какой-то причине мои контроллеры вызываются дважды.Это нарушает капчу DX_Auth на Chrome, но каким-то образом Firefox и IE могут с этим справиться.

Проблема в том, что каждый контроллер вызывается с интервалом в два миллисекунды.Я использовал log_message () для печати каждой пары ключ / значение из суперглобального $ _SERVER.

Разница только в следующем:

1-й вызов

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

и 2-й вызов

'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 сохраняет значение капчи как флэш-данные сеанса CI при первом вызове.Второй вызов стирает флэш-данные, и в результате никто не может получить правильную капчу.

Вот пример моих журналов доступа

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"

Как видите, первый вызовкажется, исходит от меня, и второй вызов не имеет реферера.

Я думал, что была проблема с файлом .htaccess, который я использовал для удаления index.php из uri.Итак, я переключился на перенаправление .htaccess «по умолчанию», как указано в документации по CI.Двойная загрузка все еще происходит.

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

Я также использовал плагин FireFox «Live HTTP headers».Похоже, что отправляется только один запрос, но консоль FireBug показывает, что возвращаются два ответа.

Кто-нибудь знает, что происходит?Это случилось с кем-то еще?

Ответы [ 4 ]

3 голосов
/ 19 августа 2010

См. Мой ответ на аналогичный вопрос, чтобы получить некоторое представление о том, что может вызвать это, и как вы можете начать определять точную проблему: Действия контроллера, вызываемые дважды --- Приложение Php

0 голосов
/ 09 декабря 2015

Моя проблема была в том, что страница была перезагружена с этим метатегом. Удалил его и двойная загрузка Firefox прекратилась.

<meta http-equiv="Content-Type" content="text/css; charset=utf-8" />
0 голосов
/ 19 августа 2010

Я столкнулся с поведением, которое выглядело так, когда связывал события с jQuery для элементов DOM на основе ответа, и забыл, что вам нужно отсоединить старое событие для этого элемента DOM.

0 голосов
/ 19 августа 2010

У меня такая же проблема, и это сводит меня с ума.запрос на самом деле пришел от Firefox.браузер Firefox отправляет запрос дважды.так что это не было ошибкой стороны codeigniter.попробуйте использовать другую версию Firefox.следует исправить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...