系统登录时,form表单post提交用户名密码,服务器验证成功,直接返回页面,刷新浏览器会弹出是否重复提交的弹框。
登录https://git.oschina.net/login,发现其登录成功后不会出现刷新重复提交的问题,firebug查看,发现响应状态为302,location为另外一个地址,查看html 302状态码,得如下结果:“这种跳转在http的协议里定义是请求的资源限制临时从不同的URI响应请求。”
于是动手试试302的效果。
在grails中,controller的action中直接操作response即可,关键代码如下:
response.setStatus(302) response.setHeader("Location","${request.getContextPath()}/index/loginOk") response.flushBuffer()
要实现302的同样效果,可以参考:http://yansong.me/2013/08/29/trace-referer-or-referrer.html