-->

Java的求引荐(Java seeking referer)

2019-10-21 01:46发布

我使用Struts和Java。 问题是,我有一些结果的页面。 用户可以点击一个项目并对其进行编辑。 我想编辑用户后,可以要返回的结果。 回不破,但如果他提交表单的更新,他将不得不单击后退2倍,我认为,可能有问题。

我曾尝试header("Referer")但是,这并不在Internet Explorer中运行。

我想实现的解决方案。 有任何想法吗? 我的想法是保存URL走动该URL的ID。 而当我想回到回从ID获取的URL。 在会话中存储它不是一个解决方案,因为用户可能打开多个窗口。

Answer 1:

最好的办法是围绕把它作为一个请求参数。 在编辑链接或按钮,只传递当前的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}">

在操作方法,只是重定向到URL完成动作后。 因为我不这样做的Struts,我不能给一个详细的Struts的例子,但在这里是你将如何与“普通的香草”的Servlet做到这一点,你必须能够将它移植到一个Struts的方法:

response.sendRedirect(request.getParameter("from"));


Answer 2:

传递一个URL作为请求参数可能会产生安全问题。 Powerlord是正确的,用户可以改变网址标头。 这将允许用户访问一个页面,这是他们可以做的反正。 更为严重的是,下面的URL是在请求参数允许攻击者在用户发送到攻击者选择的网页,与该网页的应用程序推荐的外观。 所以从BalusC答案可以启用跨站请求伪造。



文章来源: Java seeking referer
标签: java jsp struts