JSP1链接到JSP2。
JSP2调用一个servlet,它执行一些操作并以:
结束response.sendRedirect(request.getHeader("referer"));
return;
此时我回到了JSP2。 问题是从那里按下浏览器后退按钮,页面只是重新加载自己而不是返回到JSP1。 这是正确的,因为sendRedirect会在历史记录中添加一个条目。
但我想回到JSP1。 有什么提示吗?
答案 0 :(得分:5)
出于各种敏感原因,您根本不应该依赖控制器操作中的referrer标头。你已经找到了至少一个。此标头并非始终由客户端发送,或者其值实际上可能并不代表真正的引荐来源。某些浏览器,代理甚至防病毒配置可能隐藏,更改甚至混淆引用者标头。出于统计目的,最高使用它。
而是将from
作为请求参数传递,
<input type="hidden" name="from" value="${pageContext.request.requestURI}" />
使用此逻辑(省略验证)
response.sendRedirect(request.getParameter("from"));
或者,更好的是,如果它总是基于其他请求参数的同一个JSP,只需在服务器端硬编码/配置它。