2010-01-06 63 views
17

我以为我已经回答了这个问题,谢谢StackOverFlow,但我匆忙地回答了一个问题,结果并不是我问题的真正原因。页面在Firefox上加载两次?

我检查我的Apache访问日志:

这是我上浏览谷歌Chrome浏览我的web应用程序。

127.0.0.1 - - [06/Jan/2010:22:17:35 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146 
127.0.0.1 - - [06/Jan/2010:22:17:36 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548 
127.0.0.1 - - [06/Jan/2010:22:17:38 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042 

这是我在IE7上浏览我的网络应用程序。

127.0.0.1 - - [06/Jan/2010:22:21:49 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548 
127.0.0.1 - - [06/Jan/2010:22:21:50 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042 

这是我在Firefox上浏览我的网站应用程序。

127.0.0.1 - - [06/Jan/2010:22:18:08 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548 
127.0.0.1 - - [06/Jan/2010:22:18:09 +0000] "GET /webs/end/settings.php HTTP/1.1" 200 4548 
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042 
127.0.0.1 - - [06/Jan/2010:22:18:10 +0000] "GET /webs/end/index.php HTTP/1.1" 200 2042 
127.0.0.1 - - [06/Jan/2010:22:18:11 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146 
127.0.0.1 - - [06/Jan/2010:22:18:12 +0000] "GET /webs/end/new.php HTTP/1.1" 200 2146 

这只是我点击左右。但通知对于每个页面请求Firefox似乎要加载页面两次,它影响我的PHP脚本,因为他们正在执行两次,并做两个插入我的数据库!

为什么?我正在使用Firefox 3.5.6。我猜这是一个Firefox问题,而不是PHP/Apache的问题?

+0

我真的希望你所说的插入是严格的记录。如果发出GET请求导致一些其他数据更改,那么您在这里有严重的设计问题。 – NotMe 2011-01-24 20:38:30

+1

'如果发出GET请求会导致其他数据更改'这完全是虚假声明。无论您是接受来自表单字段集中的一系列输入参数,还是查询get字符串集合,都没有区别。 – 2011-01-27 14:39:22

+1

我不会说没有区别。对于一个post请求需要重新发布(大多数浏览器会提示用户),而GET请求可以轻松地(无意)重新请求,复制URL并粘贴它将重新请求它。 另外,有人可以很容易地在他们的网站上放置一个链接,其中src指向您的网站,任何访问他们网站的人都会发布到您的网站。如果您的安全性是基于cookie的,他们的Cookie仍会被发送。 所以有很多理由不使用GET发布要保留的数据或请求会改变数据。 – 2012-10-04 15:02:46

回答

13

你在Firefox中安装了哪些插件,他们可能会默默地发出请求,特别是FireBug。尝试关闭萤火虫&看看它是否仍然发生。

正如在下面的评论中提到的,最新版本的FireBug不应该这样做,所以如果不是,请尝试禁用所有插件(或在安全模式下运行FireFox)并查看它是否仍然发生

+0

与以前版本的萤火虫我有这个问题。 – 2010-01-06 22:30:31

+0

是的,最新版本不这样做,所以这可能不是问题。 – 2010-01-06 22:33:34

+0

我有萤火虫和它的版本:1.4.5,这是最新版本。 – Abs 2010-01-06 22:38:36

11

查看第二个请求中的Accept标头。它看起来是一个图像的请求?如果是这样,您可能会在导致第二个请求的CSS属性中的“img”标记或空的“url”定义上具有空的“src”属性。

此处了解详情:http://icanhascode.com/2008/06/the-mystery-of-the-multiple-requests/

一般情况下,这个问题是一个痛苦追查。

+0

这是一个样式表失败。谢谢! – Bogdan 2010-11-02 14:35:12

1

这条线是一些Dreamweaver的驱动HTML并导致浏览器加载两次(DOC型除去和萤火虫禁用):

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
+0

这一行: Gordon 2011-01-09 17:00:28

2

正如迈克尔莫顿所提到的,与丢失的SRC可以是一个问题IMG标签。也可以在A标签上清空HREF属性。我用jQuery来快速识别它们:

http://www.planbox.com/blog/development/coding/browser-send-same-request-twice-or-multiple-times.html

总之,在Firebug运行此:

$('img[src=""],a[href=""]')
+0

3

这是一个字符集声明的问题,对我来说太 - 把它拿出来的所有元的标签并在其他地方声明!

+1

这也是我的问题。将改为 fixed它。 – owise1 2012-01-30 22:48:08

+0

@ owise1您的解决方案适用于我。非常感谢。 – LoneWOLFs 2013-11-11 07:42:28

6

我今天有同样的问题。 解决方案被放在

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

代码更高。之前加载了一些CSS代码。

+0

我不得不在'<! - [if lt IE 7]>语句之前移动它。 – Keith 2015-08-17 20:14:34

+0

仍然没有工作。你有其他解决方案吗? – 2016-03-28 06:58:59

0

这些都不适合我。很多小时的担心......这是我的问题:

我有一个HTML链接,里面有一个按钮。我发现这是问题,因为当我在IE上测试它时,按钮不起作用(按钮仍然在Firefox中工作)。

WRONG:

<a href=''><button class='btn'>Test</button></a> 

RIGHT:

<a class='btn' href=''>Test</a> 

现在也没有工作的更多双击。

0

在我来说,我不得不重复的代码是这样的:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

<!-- more code --> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

从我的博客模板移除后,火狐停止重新加载页面。

0

我使用mozilla firefox 46.0.1,我遇到了同样的问题。但我注意到它只发生在我的PHP脚本有警告错误时。 在我的php脚本中设置error_reporting(0);停止了脚本的双重执行。当然,尝试所有上述建议后。