在上一頁面做跳轉(zhuǎn)操作,可以在下一頁面獲得上一頁面的Referer從而判斷頁面的來路。
目前web開發(fā)有以下幾種頁面跳轉(zhuǎn)方式:
(1)使用RequestDispatcher跳轉(zhuǎn)。該方式不支持跨域目的頁面也無法取得referer
RequestDispatcher rd = request.getRequestDispatcher(url);
rd.forward(request, response);
(2)該方式支持跨域但目的頁面也無法取得referer
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location",url);
(3)該方式支持跨域但目的頁面也無法取得referer
response.sendRedirect(url);
(4)使用form表單提交,并且用post方法提交,既可跨域又能得到referer,并且支持form表單的action屬性中url使用參數(shù)
(5)使用form表單提交,用get方法提交,既可跨域又能得到referer,但不支持form表單的action屬性中url使用參數(shù)
這種方式下會將action的值后面添加"?"提交到web服務(wù)器。如果actio中的url就含有"?"則會將"?"后的數(shù)據(jù)忽略掉。而post方式不存在這個問題。
(6)使用html中href來跳轉(zhuǎn)頁面,下一頁面,可以獲得referer。