繼續介紹「單點登入與許可權管理」系列的第一部分:單點登入與許可權管理本質,本篇說說http重定向,它也是完成單點登入的基礎知識。
該系列的完整寫作計畫,可見文章:系列概述
單點登入需要在多個web專案之間相互跳轉,使用重定向技術,自動完成登入操作。另外,當實際資源被遷移到其他url時,可使用重定向技術,將訪問原有url的請求,自動跳轉到新url,保持原有url有效。
本篇主要從以下幾個方面介紹:
基本概念
基本原理
在http協議中,伺服器通過傳送特定的響應實現重定向,瀏覽器在接收到響應後,可根據狀態碼判定重定向,並使用指定的新url重新請求。重定向的響應狀態碼為3xx,不同的狀態碼表示不同的重定向型別。
瀏覽器從響應頭中的location獲取新的url,重新傳送請求。
重定向型別
重定向型別包括永久重定向、臨時重定向、特殊重定向,不同的重定向型別,一方面會影響瀏覽器的操作,一方面會影響搜尋引擎的收錄。
永久重定向,是指原url不再被使用,應優先選擇新的url,搜尋引擎機械人會在遇到該狀態碼時,觸發更新操作,使用新的url。常見的狀態碼有301,moved permanently。
臨時重定向,如果請求的資源臨時不可用,但可從其他地方訪問。搜尋引擎不會記錄該臨時的鏈結。常見的狀態碼有302 found,307 temporary redirect。
特殊重定向,304 not modified 資源未被修改,會從本地快取中獲取網頁;300 multiple choice,是一種手工重定向,使用者可選擇重定向的頁面。
設定重定向方法
除了上面介紹的重定向方法,還可以通過html的metay元素,或者js實現重定向,但還是建議優先選擇上面介紹方法。
content屬性值,第乙個數字表示等待多少秒後進行跳轉。
window.location = "";
nginx重定向
rewrite
nginx的rewrite主要功能就是實現url的重定向,其語法規則如下:
rewrite
[flag]
regex 正則匹配需要重定向的url
replacement 替換內容,將正則匹配的內容替換成replacement
flag 標記,具體如下:
rewirte引數的標籤段位置:server,location,if
rewrite示例
將 mi.com 重定向 www.mi.com
server
return
可通過return直接重定向,如下:
server
servlet重定向
首先要區分開**和重定向的概念,**是在服務端完成的,瀏覽器位址列中的位址不會改變,是一次請求;重定向是在瀏覽器端完成的,瀏覽器位址列會變化,是二次請求。
無論是**還是重定向,在執行方法前,不要向客戶端輸出內容.
重定向
public
spring使用重定向
不帶引數
return
new modelandview("redirect:/tolist");
return
"redirect:/tolist";
帶引數public string test(redirectattributes attributes)
這樣會在重定向後的url中自動追加引數。
spring mvc 3.1 版本新增了乙個新特性,flash屬性,可以實現傳遞引數,並且可以解決重複提交的問題。
乙個正常的controller處理時,處理完成之後,會被forward到乙個操作成功的頁面,如果使用者按f5,就會再次提交一遍,如果使用redirect,就可以避免這個問題。
public string test(redirectattributes attributes)
單點登入與許可權管理本質 單點登入介紹
繼續介紹 單點登入與許可權管理 系列的第一部分 單點登入與許可權管理本質,前兩篇介紹了session與cookie 和 http重定向 有了他們,瀏覽器就可以在多個系統間自動互動,實現自動登入。該系列的完整寫作計畫,可見 系列概述 本篇介紹下單點登入,所謂單點登入,就是說使用者只需在乙個地方登入,訪...
單點登入與許可權管理本質 單點登入介紹
繼續介紹 單點登入與許可權管理 系列的第一部分 單點登入與許可權管理本質,前兩篇介紹了session與cookie 和 http重定向 有了他們,瀏覽器就可以在多個系統間自動互動,實現自動登入。該系列的完整寫作計畫,可見 系列概述 本篇介紹下單點登入,所謂單點登入,就是說使用者只需在乙個地方登入,訪...
許可權認證 SSO單點登入
sso single sign on 是處理乙個公司內的不同應用系統之間的登入問題,比如阿里巴巴旗下有很多應用系統,我們只需要登入乙個系統就可以實現不同系統之間的跳轉。為了完成乙個簡單的sso功能,需要兩個部分的合作 1 所有的認證登入都在 sso 認證中心進行 2 sso 認證中心通過一些方法來告...