Firefox发出两个HTTP请求

时间:2009-12-14 22:21:21

标签: firefox

好的,这很奇怪。

如果我向页面发出请求,文本/ html,firefox会发出一个请求。

如果我向一个页面发出请求,那就是它的application / xml,firefox会发出两个请求。

在IE浏览器中,谷歌Chrome浏览器在两种情况下都可以使用。

为什么这两个请求有任何想法,以及我如何才能强制推出这两个请求?

7 个答案:

答案 0 :(得分:3)

如果页面的编码与<meta>标记不匹配,我遇到了类似的问题。如果页面使用默认的Windows编码进行编码,但是元标记指定了UTF-8,那么一旦到达非ascii字符(例如æ,ø或å),firefox就会停止下载,并且它会从头开始重新下载页面。这会弄乱视图计数和许多其他逻辑,因为服务器端脚本会运行两次。

如果你没有用<?xml ?>开始你的页面,但声称它是,那么Firefox可能会再次重新下载页面为html(text / html)并将其处理为html。

答案 1 :(得分:2)

只是为了增加另一种可能性......

如果html代码包含一个空的img src属性,那么这会在Firefox和Chrome中产生一个2 http请求。目前,那些遵循该标准的标准,其中声明空URI引用引用绝对基URI。

答案 2 :(得分:1)

也许您是以导致HTTP Access Control功能触发的方式发出请求的?

这是一个相当新的标准,[FF3.5] [2]中的新标准可能导致双GET请求。

如果你可以嗅探请求服务器端:看看它们是否包含Origin:标题。

[2]:https://developer.mozilla.org/En/Server-Side_Access_Control服务器端访问控制

答案 3 :(得分:1)

在我的情况下,这是一个错误的内容类型标题“image / jpg”与PHP生成的图像一起发送。我将类型更改为“image / jpeg”后,双重请求消失了

有关此bug的更多信息... https://bugzilla.mozilla.org/show_bug.cgi?id=236858

答案 4 :(得分:1)

我也遇到了这个问题而且我已经弄明白了。这可能与不存在的favicon.ico 有关。详细信息here,您可以使用以下代码(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 

答案 5 :(得分:1)

我遇到过与Firefox类似的问题。可以帮助别人。 FF正在发出两个HTTP GET请求而Chrome没有。

问题是空的src=""属性。 Firefox将img / script ...标记的空白属性视为当前URL并获取当前页面。

答案 6 :(得分:0)

发现问题。

我返回的XML数据包的根节点为<feed>

Firefox由于某种原因传递了两次,可能是因为它试图确定这是否是一个有效的ATOM / RSS源。如果没有,只显示?

将根节点更改为其他可以解决问题的方法。

感谢Marcus让我朝着正确的方向前进。