asp.net - 为什么某些浏览器会两次请求我的 ASP.Net 网站上的所有页面?

标签 asp.net http firefox mime-types http-headers

Firefox 向我的 ASP.Net 网站发出重复请求。它将请求一个页面,获得响应,然后立即再次发出相同的请求(好吧,几乎相同——见下文)。这种情况发生在这个特定网站的每个页面上(但不会发生在任何其他网站上)。 IE 不会这样做,但 Chrome 也会这样做。

我已确认响应中没有 Location header ,页面中也没有 Javascript 或元标记会导致重新请求页面(如果其中任何一个为真,IE 将重新请求页面以及)。

我已经在多台机器上的多个 Firefox 安装中确认了这种行为。版本各不相同,但都是 3.x。

两个请求之间的唯一区别是 Accepts header 。对于第一个请求,它看起来像这样:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

对于第二个请求,它看起来像这样:

Accept: */*

所有情况下的 Content-Type 响应 header 都是:

Content-Type: text/html; charset=utf-8

还有一些奇怪的事情——即使 Firefox 两次请求页面,它使用第一个响应并丢弃第二个。我在页面上放置了一个计数器,它随着每个请求而递增。我可以看到响应返回(通过 Charles 代理)。 Firefox 第一次会得到“1”,第二次会得到“2”。但出于某种原因,它会显示“1”。

Chrome 表现出完全相同的行为。考虑到 Accepts header 的不同,我怀疑这是一个协议(protocol)级别的问题,但我以前从未见过这种情况。

最佳答案

检查您没有任何 img 标签具有空的 src 属性。

FireFox(显然还有 Safari 和 Chrome)会将此解释为对网站的请求,从而为您提供重复的请求。

有一个Mozilla support request关于它,还有一篇不错的文章 here讨论每个浏览器(和每个版本)在这种情况下的作用。

关于asp.net - 为什么某些浏览器会两次请求我的 ASP.Net 网站上的所有页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515784/

相关文章:

c# - 将一些遗留的 VB.NET 代码转换为 C#,它在做什么?

asp.net - ASP/.NET 在不使用 ODBC 或任何驱动程序的情况下连接 MySQL 服务器?

asp.net - ASP.NET中的BackgroundWorker线程

http - 对于输入的旧密码不正确的更改密码请求,正确的 HTTP 响应是什么?

php - CakePHP2 : CORS Preflight issues with JWT Auth

asp.net - 您可以从 asp.net web 应用程序访问客户端 com 端口吗

ios - 如何验证来自 iOS 应用程序的 http 请求?

json - Firefox:在“网络”标签上查看原始JSON

c# - 使用 Firefox 43 及更高版本创建新的 FirefoxDriver 再次超时

javascript - 如何检测来自 Firefox 历史记录下拉框的事件