好的,这很奇怪。
如果我向页面发出请求,文本/ html,firefox会发出一个请求。
如果我向一个页面发出请求,那就是它的application / xml,firefox会发出两个请求。
在IE浏览器中,谷歌Chrome浏览器在两种情况下都可以使用。
为什么这两个请求有任何想法,以及我如何才能强制推出这两个请求?
答案 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让我朝着正确的方向前进。