我使用的是Struts和Java。问题是我有一个包含一些结果的页面。用户可以单击项目并对其进行编辑。我希望在编辑后,用户能够返回到结果。Back没有损坏,但如果他提交表单进行更新,他将不得不点击back 2次,我认为这可能会有问题。
我试过header("Referer"),但在I浏览器中不起作用。
我正在尝试实现一个解决方案。有什么想法吗?我的想法是保存url并移动该url的ID。当我想要返回时,从ID中获取url。将它存储在会话中并不是一个解决方案,因为用户可能已经打开了多个窗口。
发布于 2010-04-09 22:58:09
最好的方法是将其作为请求参数传递。在编辑链接或按钮上,只需将当前URL作为请求参数传递即可。下面是一个带有链接的示例:
<a href="/login?from=${pageContext.request.requestURI}">edit</a>或者,如果是提交表单的按钮,则将其作为隐藏输入值传递到同一表单中:
<input type="hidden" name="from" value="${pageContext.request.requestURI}">在包含编辑表单的页面中,将其作为表单的隐藏输入值传递给后续请求:
<input type="hidden" name="from" value="${param.from}">在action方法中,只需在完成操作后重定向到该URL。因为我不做Struts,所以我不能给出一个详细的Struts示例,但这里是如何使用“普通”Servlet实现的,您必须能够将其移植到Struts方法:
response.sendRedirect(request.getParameter("from"));发布于 2012-11-20 17:58:19
将URL作为请求参数传递可能会产生安全问题。Powerlord说得对,用户可以修改referrer的标题。这将允许用户访问页面,这是他们无论如何都可以做的事情。更严重的是,跟随请求参数中的URL允许攻击者将用户发送到攻击者选择的页面,看起来该页面是您的应用程序推荐的页面。因此,来自BalusC的答案可以启用跨站点请求伪造。
https://stackoverflow.com/questions/2608357
复制相似问题