Firefox делает два HTTP-запроса

Хорошо, это странно.

Если я делаю запрос на страницу, где она text/html, firefox делает один запрос.

Если я делаю запрос на страницу, где это приложение /xml, firefox делает два запроса.

В IE, Google Chrome, он делает один в обоих случаях.

Любые идеи, почему эти два запроса, и как я могу заставить только одного?

Ответ 1

У меня была аналогичная проблема, если кодировка страницы не соответствовала тегу <meta>. Если страница была закодирована с использованием кодировки Windows по умолчанию, но метатег указывал UTF-8, то firefox прекратил загрузку после достижения символа не ascii (например, æ, ø или å), и он будет переназначать страницу с самого начала. Это испортило бы количество просмотров и множество другой логики, поскольку серверная сторона script будет работать дважды.

Возможно, если вы не запустите свою страницу с помощью <?xml ?>, но заявите, что она есть, то Firefox снова загрузит страницу как html (text/html) и обработает ее как html.

Ответ 2

Просто добавьте еще одну возможность...

Если код html содержит пустой атрибут img src, то это вызывает 2-х HTTP-запрос как в Firefox, так и в Chrome. В настоящее время это те, которые следуют стандарту на письмо, в котором говорится, что пустая ссылка URI относится к абсолютному базовому URI.

Ответ 3

Возможно, вы делаете запрос таким образом, чтобы вызвать Контроль HTTP-доступа для запуска?

Это довольно новый стандарт и новый в [FF3.5] [2], который может вызывать двойные запросы GET.

Если вы можете обнюхать сервер запросов на запросы: посмотрите, содержат ли они заголовок Origin:.

[2]: https://developer.mozilla.org/En/Server-Side_Access_Control Контроль на стороне сервера

Ответ 4

В моем случае это был неправильный заголовок типа контента "image/jpg", отправленный с созданным PHP образом. Двойные запросы ушли после того, как я изменил тип на "image/jpeg"

Подробнее об этой ошибке... https://bugzilla.mozilla.org/show_bug.cgi?id=236858

Ответ 5

Я тоже встречаюсь с этой проблемой, и я это понял. Это может быть связано с несуществующим favicon.ico. подробнее здесь, вы можете проверить его, используя следующий код (node.js),:

var http = require('http');
server = http.createServer(function (req,res){

    console.log(req.url);
    res.writeHeader(200,{"Content-Type":"text/html"});
    res.end("Hello World");
})
server.listen(8000);
console.log("httpd start @8000");

ожидается, что результат будет следующим:

httpd start @8000 
/ 
/favicon.ico 

Ответ 6

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

Проблема была пустой атрибут src="". Firefox рассматривает такие пустые атрибуты для тегов img/ script... как текущий url и GET текущую страницу.

Ответ 7

Нашел проблему.

Возвращаемый пакет XML имел корневой каталог node <feed>

Firefox пропускает это дважды по какой-либо причине, возможно, когда он пытается определить, является ли это допустимым сигналом ATOM/RSS. Если нет, вместо этого отображается только?

Изменение корня node на что-то еще устранило проблему.

Спасибо Маркусу за то, что он начал меня в правильном направлении.