Java Spring security在IE中的行为真的很奇怪
我遇到了我以前见过的最奇怪的问题 我正在开发的应用程序使用SpringSecurity3.1.3来提供身份验证支持。有一个自定义登录表单,我为其实现了自定义authenticationmanager/successhandler和failurehandler 由于某些原因,在internet explorer上,我总是收到错误消息“请填写所有必填字段”。这是由于将/login?error=1附加到只能通过以下代码(redirectAndAddError方法)访问的“我的url”结尾导致的: 所以我尝试使用Fiddler2,一个web调试代理来查看两个参数中是否有一个是空的。奇怪的是,当这个程序运行时,错误不再发生,我可以成功登录 以前有人有过类似的问题吗?我认为这与我的代码无关,因为运行这个工具突然“解决”了这个问题 这个问题只发生在internet explorer中,这使得它更加奇怪 编辑 我使用了另一个工具来观察请求,这就是IE中发生的情况: 首先,向uri/authenticate发送POST请求,我自己设置如下: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”结尾导致的: 所以
<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。我已尝试清除缓存。我用更多的信息更新了我原来的帖子。