Страницы загружаются дважды в Firefox?
Я думал, что ответил на этот вопрос, прежде чем поблагодарить StackOverFlow, но я поспешно ответил и не стал реальной причиной моей проблемы.
Я проверил свой журнал доступа к Apache:
Это я просматриваю свое веб-приложение в браузере Google Chrome.
127.0.0.1 - - [06/Jan/2010:22:17:35 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
127.0.0.1 - - [06/Jan/2010:22:17:36 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:17:38 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
Это я просматриваю свое веб-приложение на IE7.
127.0.0.1 - - [06/Jan/2010:22:21:49 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:21:50 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
Это я просматриваю свое веб-приложение в Firefox.
127.0.0.1 - - [06/Jan/2010:22:18:08 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:18:09 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042
127.0.0.1 - - [06/Jan/2010:22:18:11 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
127.0.0.1 - - [06/Jan/2010:22:18:12 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146
Это просто я нажимаю. Но notice, что для каждого запроса страницы firefox, похоже, дважды загружает страницу и выполняет мои скрипты PHP, поскольку они выполняются дважды и вносят две вставки в мой БД!
Почему так? Я использую Firefox 3.5.6. Я предполагаю, что это проблема Firefox, а не PHP/Apache?
Ответы
Ответ 1
Какие плагины вы установили в Firefox, они могут делать запросы молча, особенно FireBug. Попробуйте отключить firebug и посмотрите, все ли это происходит.
Как уже упоминалось в комментарии ниже, последняя версия FireBug не должна делать этого, поэтому, если это не так, попробуйте отключить все ваши плагины (или запустить FireFox в безопасном режиме) и посмотреть, все ли это происходит
Ответ 2
Проверьте заголовки Accept на втором запросе. Похоже, это запрос на изображение? Если это так, у вас может быть пустой атрибут "src" в теге "img" или пустое определение "url" в свойстве CSS, которое вызывает второй запрос.
Дополнительная информация здесь: http://icanhascode.com/2008/06/the-mystery-of-the-multiple-requests/
В общем, эта проблема является болью для отслеживания.
Ответ 3
У меня была такая же проблема в другой день.
Решение было помещено
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
выше кода. Перед загрузкой некоторых CSS-кодов.
Ответ 4
Это была проблема объявления чарсет для меня - вытащите ее из всех метатег и объявите ее в другом месте!
Ответ 5
Как упоминалось Майклом Мортоном, теги IMG с отсутствующим SRC могут быть проблемой. Также могут быть пустыми атрибуты HREF для тегов A. Я использовал jQuery, чтобы быстро их идентифицировать:
http://www.planbox.com/blog/development/coding/browser-send-same-request-twice-or-multiple-times.html
Короче говоря, запустите это в Firebug:
$('img[src=""],a[href=""]')
Ответ 6
Эта строка представляет собой HTML-код с Dreamweaver и заставил браузер загружаться дважды (с удаленным типом документа и отключением firebug):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Ответ 7
Никто из них не работал у меня. Много часов беспокойства... вот в чем была моя проблема:
У меня была ссылка HTML с кнопкой внутри нее. Я обнаружил, что это проблема, потому что, когда я тестировал ее в IE, кнопка не работала (кнопки все еще работали в Firefox).
НЕПРАВИЛЬНО:
<a href=''><button class='btn'>Test</button></a>
RIGHT:
<a class='btn' href=''>Test</a>
РАБОТАЕТ теперь и не более двух раз нажмите.
Ответ 8
В моем случае у меня были повторяющиеся теги:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!-- more code -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
После удаления из моего шаблона Blogger Firefox перестает перезагружать страницу.
Ответ 9
Я использую mozilla firefox 46.0.1, и у меня такая же проблема. Но я заметил, что это произошло только тогда, когда у моего PHP скрипт были ошибки предупреждения.
Установка error_reporting(0);
в моем PHP скрипт остановила двойное выполнение script. Конечно, пробовав все вышеуказанные предложения.