我有三个名为a.jsp、b.jsp和c.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 。
我有三个名为a.jsp、b.jsp和c.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 。
原因可能是您的页面被缓存。
您可以使用 firebug 检查 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。
如果我没记错的话,当您按下浏览器上的后退按钮时,您会删除堆栈中的最后一页,这意味着您不请求该页面,您只需删除顶部的一页。这意味着您永远不会收到 c 对 b 的请求。