參考:segmentfault.com/a/119000000…html
HTTP報文是包裹在TCP報文中發送的,服務器端收到TCP報文時會解包提取出HTTP報文。可是HTTP報文是明文,若是中間被截取的話會存在一些信息泄露的風險。web
HTTPS協議的本質就是HTTP + SSL(or TLS)。在HTTP報文進入TCP報文以前,先使用SSL對HTTP報文進行加密。算法
HTTPS在傳輸數據以前須要客戶端與服務器進行一個握手(TLS/SSL握手),在握手過程當中將確立雙方加密傳輸數據的密碼信息(第二次握手服務器會發送一個SSL證書,客戶端對其驗證)。segmentfault
TLS/SSL使用了非對稱加密、對稱加密以及hash等。具體過程請參考經典的阮一峯先生的博客TLS/SSL握手過程。瀏覽器
SSL加密過程: 須要注意的是非對稱加解密算法的效率要比對稱加解密要低的多。 因此SSL在握手過程當中使用非對稱密碼算法來協商密鑰,實際使用對稱加解密的方法對http內容加密傳輸。緩存
Https的好處安全
缺點服務器
200 ok 服務器已成功處理了請求並提供了請求的網頁cookie
202 Accepted 已經接受請求,但處理還沒有完成session
204 No Content 沒有新文檔,瀏覽器應該繼續顯示原來的文檔
206 Partial Content 客戶端進行了範圍請求(實現斷點續傳)
301 Moved Permanently 永久性重定向
302(或307) 臨時性重定向
304 Not Modified 未修改,自從上次請求後,請求的內容未修改過
401 未經受權
403 Forbidden 服務器拒絕請求
404 Not Found 服務器不存在客戶端所請求的資源
500 服務器遇到一個錯誤,使其沒法請求提供服務
Sesssion在服務端生成,存在客戶端。客戶端訪問某個地址時,服務器會根據頁面的頭部信息生成coolkie(字符串),而後cookie會加在http響應頭中,發往客戶端並保存在瀏覽器。在下次客戶端請求時,請求中會附帶存儲的Cookie。
Session 是在服務器端生成的,存儲在服務器端,即存在內存中。能夠對生成的 Session 設置過時時間,若是不設置過時時間,默認的 Session 過時時間是30 分鐘。可是,Sesssion 的生成的同時,會生成一個與之相關聯的的 SessionID ,此SessionID的存儲是須要 Cookie來完成的。SessionID 是以名稱爲 JSESSIONID,其值應該是一個既不會重複,又不容易被找到規律以仿造的字符串。SessionID會隨着這次Http響應,一併返回到客戶端,並保存在客戶端中(Cookie)。到當前請求再次發出後,該 SessionID會隨着 Http 頭部,傳到服務器中,服務器依據當前 SessionID 獲得與之對應的 Session.
注意:一個域,在客戶端創建的全部的Cookie都是能夠共享的,只要 Cookie 沒有過時。
在網站中,http請求是無狀態的。也就是說即便第一次和服務器鏈接後而且登陸成功後,第二次請求服務器依然不能知道當前請求是哪一個用戶。Cookie和Session的出現就是爲了解決這個問題。
參見:www.cnblogs.com/xiaoshitout…
web開發發展至今,cookie和session的使用已經出現了一些很是成熟的方案。在現在的市場或者企業裏,通常有兩種存儲方式:
參見博客:www.cnblogs.com/xxtalhr/p/9…
若是客戶端禁用了 Cookie 的話,不少網站任然能夠存儲用戶的信息。一種處理的方式是URL 重寫,將 SesseionID 直接附加在請求地址的後面。另外一種處理的方式是,使用隱藏自動的方式。就是服務器自動的在表單中,添加一個隱藏字段,以便在表單提交時,將 SesseionID 一塊兒傳到服務器,進行識別。