一些浏览器发送POST,然后发送GET请求

一些浏览器发送POST,然后发送GET请求,post,browser,get,Post,Browser,Get,我的Servlet应用程序。每次用户提交表单时调用两次:第一次使用POST请求,第二次使用GET请求(两个请求具有相同的URI) 这个问题似乎与应用服务器无关(我已经尝试过tomcat-6.0和resin.2.1) 问题似乎与浏览器有关:MS Internet Explorer 6.0、7.0和8.0客户端不会出现问题,但Google Chrome-2.0和FireFox-3.0.11客户端会出现问题 HTML代码很简单: <form method="post" action="MySer

我的Servlet应用程序。每次用户提交表单时调用两次:第一次使用POST请求,第二次使用GET请求(两个请求具有相同的URI)

这个问题似乎与应用服务器无关(我已经尝试过tomcat-6.0和resin.2.1)

问题似乎与浏览器有关:MS Internet Explorer 6.0、7.0和8.0客户端不会出现问题,但Google Chrome-2.0和FireFox-3.0.11客户端会出现问题

HTML代码很简单:

<form method="post" action="MyServlet?formSubmitted">
    <input type="text" name="data">
    <input type="submit" value="OK">
</form>


有人能解释一下这种行为吗?

这看起来很像是针对Chrome注册的。我会跟踪这一点并找到解决方案。

如果您确信它不是客户端JavaScript(我也很感激您花时间简化了测试和验证),那么我接下来要寻找的就是服务器端重定向

我相信你是在Windows上运行的(这是Chrome唯一存在的地方,对吗?),所以下载该工具(由MSDN生产)。它将显示客户端和服务器之间发生的所有请求。如果您看到POST收到302响应,则表示服务器端重定向。
监控

我刚刚遇到了完全相同的问题,结果是在呈现的新页面中有一个带有空src参数的标记,这导致Firefox执行一个与原始帖子相同的get。

查找提交表单的JavaScript。如果你不相信我的话,创建一个简单的HTML页面,其中只包含表单,而不包含其他内容,并验证你只看到了帖子。因为如果浏览器同时使用这两种功能,那么它们将非常脆弱,在过去的15年中,有人会注意到这一点。谢谢你。不涉及javascript。我将尝试简化测试用例,尝试隔离问题源。很高兴你解决了问题-永远不会猜到图像标签(如果Firefox没有提交错误,我强烈建议这样做)我会得到纠正,至少在Chrome上是这样。然而,我不相信Firefox(在FF3.0.11/Linux上也没有看到这种行为)。在(相对)成熟的Firefox中出现这种错误是相当严重的,我承认你完全正确。我不怪这些浏览器。我的代码中一定有错误,这就是我请求帮助的原因。谁知道过去是否有人遇到过类似的事情!。谢谢你,卡洛斯你能再检查一下浏览器吗?您的问题似乎与已知的Chrome bug有关。但格雷戈里不相信你。火狐。我会升级bothChrome说它是最新的(2.0.172.33)
我会检查更新FireFox…

与此同时,我遵循kdgregory的建议,试图简化我的测试用例,创建非常基本的代码,任何人都能理解和复制,并且…
结果是合理的:我无法复制这个问题。Chrome在表单提交时只发送一篇帖子。非常感谢,Gregory。菲德勒真的很有启发性。我是一个可怜的无知者,我不想让你对我的部分进度报告感到厌烦,但我觉得不得不写这些报告。也许这有助于我找到解决方案。首先,我已经更新到FireFox-3.5,问题消失了:表单提交时每个用户只有一个帖子交互。其次,与Fiddler的检查为不同的浏览器生成不同的输出:FireFox-3.5具有预期的行为:一个帖子请求,接下来是对返回页面的静态资源(图像和CSS)的不同GET请求。所有请求返回的代码都是200(OK)。我记得几天前看到一个关于空URL的稍微不同的问题,但我从来没有想过要把它作为一个原因(也不知道为什么你会被标记为维基——这个答案值得打分)