如何将Spring Security中的重定向方法从302更改为303?

时间:2014-06-21 08:23:43

标签: http firefox spring-mvc redirect spring-security

我使用Spring Security 3.2.1来保护部署到Tomcat的Spring MVC应用程序。

当Web会话过期时,Spring Security会自动将用户重定向到登录页面。但是,我的一些AJAX请求使用PUTPOSTDELETE方法。当其中一个请求被重定向时,FireFox会显示此对话框(其他浏览器的行为方式不同):

enter image description here

这是根据HTTP/1.1 specification的具有302状态代码的重定向的正常行为,其中包含:

  

如果收到302状态代码以响应除以外的请求   GET或HEAD,用户代理不得自动重定向   请求,除非用户可以确认...

我想摆脱对话。我认为,如果Spring Security使用303状态代码(而不是302)的响应,则不会出现对话。如何将状态代码更改为303?

1 个答案:

答案 0 :(得分:2)

1)RFC 2616已过时。当前规范中的文字为(http://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7231.html#rfc.section.6.4):

  

3xx(重定向)类状态代码表示用户代理需要采取进一步的操作才能完成请求。如果提供了Location头字段(第7.1.2节),则用户代理可以自动将其请求重定向到Location字段值引用的URI,即使不了解特定的状态代码也是如此。由于用户可能不希望重定向不安全的请求,因此需要谨慎处理第4.2.1节中定义的未知安全方法。

2)Firefox正在删除这些提示。见https://bugzilla.mozilla.org/show_bug.cgi?id=677754

3)303是否比302更合适,实际上取决于重定向的语义。