2010-08-23 28 views
8

我已经使用了代码“request.getHeader(”Referer“);”代码似乎工作正常。但最近我发现它在IE中不起作用。 IE被抛出null。我现在对如何前进毫无头绪。有没有其他的“Referer”头可以获得上一个链接并在所有浏览器中正常工作?从前面的链接设置自定义标题对我来说不是一个可行的选择。所以有人请帮我解决这个问题。 谢谢。“Referer”的替代标题

+2

标签jsp建议您尝试访问jsp文件中的标头。你不应该那样做。 Java处理属于控制器,不属于视图组件。 – 2010-08-23 10:03:36

+0

那么在这种情况下,最好的方法是什么?我需要添加用户的最后登录时间。 – 2010-08-23 10:19:42

回答

10

“Referer”标题条目是可选的。你不能依靠它存在。没有跨浏览器的方式来获取上一个链接,因为这取决于用户设置和代理配置(即系统管理员认为他们应该让你看到什么)。

你必须找到一种没有这些信息的生活方式。

+0

如果是这样的话,有什么办法让我在IE中获得以前的链接? – 2010-08-23 09:17:48

+4

我不认为这是特定于IE的。大多数浏览器允许你停用refer(r)er标题,如果你手动输入一个url到地址栏中,也不会有引用者。你不能依赖引荐者信息。 – 2010-08-23 10:01:42

7

目前尚不清楚您需要什么,但我怀疑您需要它能够在某个操作完成后返回同一网站的某个“初始页面”。然后,您的最佳选择是将请求URI作为请求参数传递。例如。一个登录链接:

<a href="/login?from=${pageContext.request.requestURI}">login</a> 

在登录表单,保持它作为窗体的隐藏输入值的下一个请求:

<input type="hidden" name="from" value="${param.from}"> 

在登录操作方法,只是重定向到URL完成后那个行动。

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

如果这是不是你要找什么,那么你真的应该阐述你的问题更要问如何实现一个功能性需求,而不是询问如何实现(错误)的解决方案。

依赖引用者上的任何业务逻辑流程从一开始就是一个糟糕的主意。您的第一个Web开发者课程应该是:最终用户拥有完整控制他/他通过HTTP请求发送的内容。你不应该依赖所有这些信息,更不要说100%正确。