我使用了代码“request.getHeader(”Referer“);”代码似乎工作正常。但最近我发现它在IE中不起作用。 IE投掷无效。我现在对如何前进毫无头绪。有没有“Referer”标题的替代品可以获得以前的链接并在所有浏览器中正常工作?从上一个链接设置自定义标题对我来说不是一个可行的选择。所以有人请帮我解决这个问题。 感谢。
答案 0 :(得分:10)
“Referer”标头条目是可选的。你不能依赖它存在。没有跨浏览器方式来获取上一个链接,因为这取决于用户设置和代理配置(即系统管理员认为应该允许您查看的内容)。
如果没有这些信息,你必须找到一种生活方式。
答案 1 :(得分: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%正确了。