0

我有三个名为a.jspb.jspc.jsp的 JSP 。

a.jsp我要去b.jsp

然后b.jsp 中的以下代码request.getHeader("Referer")返回a.jsp

再次从b.jsp我要去c.jsp

c.jsp我按浏览器后退按钮来到b.jsp

然后b.jsp 中的以下代码再次request.getHeader("Referer")返回a.jsp

为什么它不返回c.jsp

有什么方法可以让我在浏览器后退按钮上获得c.jsp 。

4

2 回答 2

3

原因可能是您的页面被缓存。

您可以使用 firebug 检查 http 标头。

查看 http 请求标头

更新 1

我用 a.jsp、b.jsp、c.jsp 创建了一个新项目,代码如下:

一个.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>a</h1>
        <a href="b.jsp">b</a><br/>
        <a href="c.jsp">c</a><br/>
        <b><%=request.getHeader("Referer")%></b>
    </body>
</html>

b.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>b</h1>
        <a href="a.jsp">a</a><br/>
        <a href="c.jsp">c</a><br/>
        <b><%=request.getHeader("Referer")%></b>
    </body>
</html>

c.jsp

<%@page contentType="text/html" pageEncoding="UTF-8" language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>c</h1>
        <a href="a.jsp">a</a><br/>
        <a href="b.jsp">b</a><br/>
        <b><%=request.getHeader("Referer")%></b>
    </body>
</html>

它运作良好。您可以使用代码创建一个新项目并对其进行测试。我不确定,你的情况是什么,也许你正在使用 AJAX,那么引用者只会应该是最后一页的 URL。

于 2012-06-27T08:05:03.490 回答
0

如果我没记错的话,当您按下浏览器上的后退按钮时,您会删除堆栈中的最后一页,这意味着您不请求该页面,您只需删除顶部的一页。这意味着您永远不会收到 c 对 b 的请求。

于 2013-09-10T13:39:09.527 回答