Java Spring security在IE中的行为真的很奇怪

Java Spring security在IE中的行为真的很奇怪,java,spring,spring-security,fiddler,Java,Spring,Spring Security,Fiddler,我遇到了我以前见过的最奇怪的问题 我正在开发的应用程序使用SpringSecurity3.1.3来提供身份验证支持。有一个自定义登录表单,我为其实现了自定义authenticationmanager/successhandler和failurehandler 由于某些原因,在internet explorer上,我总是收到错误消息“请填写所有必填字段”。这是由于将/login?error=1附加到只能通过以下代码(redirectAndAddError方法)访问的“我的url”结尾导致的: 所以

我遇到了我以前见过的最奇怪的问题

我正在开发的应用程序使用SpringSecurity3.1.3来提供身份验证支持。有一个自定义登录表单,我为其实现了自定义authenticationmanager/successhandler和failurehandler

由于某些原因,在internet explorer上,我总是收到错误消息“请填写所有必填字段”。这是由于将/login?error=1附加到只能通过以下代码(redirectAndAddError方法)访问的“我的url”结尾导致的:

所以我尝试使用Fiddler2,一个web调试代理来查看两个参数中是否有一个是空的。奇怪的是,当这个程序运行时,错误不再发生,我可以成功登录

以前有人有过类似的问题吗?我认为这与我的代码无关,因为运行这个工具突然“解决”了这个问题

这个问题只发生在internet explorer中,这使得它更加奇怪

编辑

我使用了另一个工具来观察请求,这就是IE中发生的情况:

首先,向uri/authenticate发送POST请求,我自己设置如下:

<beans:property name="filterProcessesUrl" value="/authenticate"/>
 <intercept-url pattern="/login**" access="permitAll"/>

该请求的响应具有http状态代码302,暂时移动并返回新位置为/login?error=1(带有必填字段的my form required error)

在此之后,/login?error=1出现GET请求,状态代码401:未经授权。截取url的设置如下所示:

<beans:property name="filterProcessesUrl" value="/authenticate"/>
 <intercept-url pattern="/login**" access="permitAll"/>

下一个请求是GET request to/login?error=1,这一次状态代码显示:error\u INTERNET\u CONNECTION\u RESET,这可能是个问题

在Google Chrome中,提出以下请求:


POST to/authenticate,结果是302:临时移动到仪表板页面(登录后显示)

在chromium bugtracker中发现此问题后,我的团队中的某个人终于找到了问题所在:

通过在我们的登录控制器中添加此选项,问题已得到解决

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String doLogin() throws ServletException, IOException {
    return "forward:/authenticate";
}

并更改表单发布到该表单的url,而不是spring security提供的身份验证url(我们现在手动重定向到它)

这里没有明显的解释。你正在使用什么版本的IE?F12开发者工具中是否有网络选项卡?(您是否尝试过清除浏览器的缓存?)我正在使用设置为IE7兼容模式的IE8。我已尝试清除缓存。我用更多的信息更新了我原来的帖子。