jsp request.getHeader("referer")

來源:互聯網
上載者:User

jsp教程 request.getHeader("referer")


它是http協議,所以任何能開發web程式的語言都可以實現,比如jsp中是:

request.getHeader("referer");

php教程是$_SERVER['HTTP_REFERER']。其他的我就不舉例了(其實是不會其他的語言)。

那它能幹什麼用呢?我舉兩個例子:

1,防止盜連,比如我是個下載軟體的網站,在下載頁面我先用referer來判斷上一頁面是不是自己網站,如果不是,說明有人盜連了你的下載地址。

2,電子商務網站的安全,我在提交信用卡等重要訊息的頁面用referer來判斷上一頁是不是自己的網站,如果不是,可能是駭客用自己寫的一個表單,來提交,為了能跳過你上一頁裡的網頁特效的驗證等目的。

使用referer的注意事項:

如果我是直接在瀏覽器裡輸入有referer的頁面,返回是null(jsp),也就是說referer只有從別的頁面點擊串連來到這頁的才會有內容。

我做了個實驗,比如我的referer代碼在a.jsp中,它的上一頁面是b.htm,c.htm是一個帶有iframe的頁面,它把a.jsp嵌在iframe裡了。我在瀏覽器裡輸入b.htm的地址,然後點擊串連去c.htm,那顯示的結果是b.htm,如果我在瀏覽器裡直接輸入的是c.htm那顯示的是c.htmreferer是瀏覽器在使用者提交請求當前頁面中的一個連結時,將當前頁面的URL放在頭域中提交給服務端的,如當前頁面為a.html,它裡面有一個b.html的連結,當使用者要訪問b.html時瀏覽器就會把a.html作為referer發給服務端.

如何擷取 上一級頁面的地址

OK,如果發送頁面以POST方式提交
這個request.getHeader("referer")  完全沒有問題
但是如果如果發送頁面以get方式提交 ,或許還帶有參數
request.getHeader("referer") 會返回空值  如何解決呢?

說下我的具體情況吧
比如在每個JSP頁面 都包含
<%@page errorPage="../error.jsp" %>
如果出現任何問題 都會跳到error.jsp頁面
error.jsp 有一個back的按鈕 要求實現返回上一級頁面

其實利用history.back() 就可以實現 ,但是由於Proxy 伺服器原因 去掉了緩衝的原因  所以需要另一種方式來實現此功能

大家有什麼好的方法和建議嗎??謝謝

把地址儲存到request或session裡面去。

你根本沒有理解<%@page errorPage="../error.jsp" %>
的真正意義,否則不可能會問出這種問題

不好意思  get 用request.getHeader  是沒問題的
document.location="xx.jsp"  這樣才有問題

那樓上請教一下該如何理解呢  ~  說實話 我只知道errorpage 就是相當於一個大的catch 

但需求要求在這個頁面 有一個返回上一級頁面的功能

OK,如果發送頁面以POST方式提交
這個request.getHeader("referer")  完全沒有問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.