我使用Spring Security 3.2.1来保护部署到Tomcat的Spring MVC应用程序。
当Web会话过期时,Spring Security会自动将用户重定向到登录页面。但是,我的一些AJAX请求使用PUT
,POST
和DELETE
方法。当其中一个请求被重定向时,FireFox会显示此对话框(其他浏览器的行为方式不同):
这是根据HTTP/1.1 specification的具有302状态代码的重定向的正常行为,其中包含:
如果收到302状态代码以响应除以外的请求 GET或HEAD,用户代理不得自动重定向 请求,除非用户可以确认...
我想摆脱对话。我认为,如果Spring Security使用303状态代码(而不是302)的响应,则不会出现对话。如何将状态代码更改为303?
答案 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更合适,实际上取决于重定向的语义。