2009-12-14 46 views
11

好吧,这很奇怪。Firefox发出两个HTTP请求

如果我向一个页面发送请求,它是text/html,firefox发出一个请求。

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

在IE浏览器中,谷歌Chrome浏览器在两种情况下都成为一款。

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

+3

示例代码plllllllzzzzzzzz – Jason 2009-12-14 22:24:13

+1

我在计算机上的防病毒套件引起此问题时曾遇到问题。我们花了很长时间调试它,试图找出IE为什么每次发送两个请求时,其他浏览器都没有。我知道你的情况是Firefox,但它仍然值得一试。 – jalf 2009-12-14 22:28:16

+0

@PiPeep,该queston是关于一个OGG视频文件,答案是专门关于在视频文件中寻找。这是一个html文件。 Firefox不需要在html文件中“查找”,因此这个问题不能被认为是重复的。 – Marius 2009-12-14 22:49:20

回答

3

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

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

0

发现问题。

我返回XML数据包具有的<feed>

根节点火狐通过这个两次出于某种原因,也许因为它试图确定这是否是一个有效的ATOM/RSS提要。如果没有,只需要显示?

将根节点更改为其他内容解决了问题。

感谢Marcus让我走向正确的方向。

2

我想补充另一种可能性......

如果HTML代码中包含的清空img src属性,然后在Firefox和Chrome中导致2个http请求。目前,那些遵循标准的字母表示空白URI引用是指绝对基本URI。

1

我也遇到过这个问题,我已经想通了.THIS可能与不存在的favicon.ico有关。详细信息here,您可以使用以下代码(节点。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 
1

我已经与Firefox类似的问题。可能帮助某人。 FF做了两个HTTP GET请求,而Chrome没有。

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