【问题标题】:Alternative to "Referer" Header替代“推荐人”标题
【发布时间】:2011-04-02 13:05:03
【问题描述】:

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

【问题讨论】:

  • 标签 jsp 表明您正在尝试访问 jsp 文件中的标头。你不应该那样做。 Java 处理属于控制器,而不是视图组件。
  • 那么在这种情况下最好的方法应该是什么?我需要添加用户的最后登录时间。

标签: java http jsp http-headers


【解决方案1】:

目前尚不清楚您需要它来做什么,但我怀疑您需要它才能在某些操作完成后返回到同一网站上的某个“初始页面”。然后,您最好的选择是将请求 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% 正确了。

【讨论】:

    【解决方案2】:

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

    你必须想办法在没有这些信息的情况下生活。

    【讨论】:

    • 如果是这样的话,有什么办法让我在IE中获取上一个链接?
    • 我不认为这是特定于 IE 的。大多数浏览器都允许您停用refer(r)er 标头,如果您在地址栏中手动输入url,也不会有referer。您不能依赖推荐人信息。
    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多