初入職場的新人,是否是常常會被一些基礎的網絡知識難住,又不敢問老大,只好默默的百度? 納,我花一個星期的加班時間,把這些常常要用到的網絡知識點給整理出來了! 這是一個系列的,若是對大家有用,後續還會繼續發。Cookie 定義 「Cookie」是小量信息,由網絡服務器發送出來以存儲在網絡瀏覽器上,從而下次這位獨一無二的訪客又回到該網絡服務器時,可從該瀏覽器讀回此信息。這是頗有用的,讓瀏覽器記住這位訪客的特定信息,如上次訪問的位置、花費的時間或用戶首選項(如樣式表)。Cookie 是個存儲在瀏覽器目錄的文本文件,當瀏覽器運行時,存儲在 RAM 中。一旦你從該網站或網絡服務器退出,Cookie 也可存儲在計算機的硬驅上。當訪客結束其瀏覽器對話時,即終止的全部 Cookie。爲何要使用Cookie? 首先咱們要知道一個概念,web程序是使用HTTP協議傳輸的,而HTTP協議是無狀態的協議,對於事務處理沒有記憶能力。缺乏狀態意味着若是後續處理須要前面的信息,則它必須重傳,這樣可能致使每次鏈接傳送的數據量增大。 另外一方面,在服務器不須要先前信息時它的應答就較快。 舉個例子:好比你去跟老師請一天假,老師問了你一遍緣由,準你請假。請假結束後你發現一天好像不夠,而後你又去跟老師請假。老師又問了你一遍緣由。若是你是客戶端,那麼老師就是服務器端。你請假結束後,客戶端和服務器端鏈接關閉,你要再次請假的話,客戶端課服務器端須要從新鏈接,可是由於HTTP協議是無狀態協議,服務器已經不知道你爲何來了,因此又問了你一次。而Cookie的產生彌補HTTP協議的不足。 Cookie何時產生? Cookie的使用一先要看需求。由於瀏覽器能夠禁用Cookie,同時服務端也能夠不Set-Cookie。 通常來講,訪問html不產生cookie,訪問jsp,servlet產生cookie。客戶端向服務器端發送一個請求的時,服務端向客戶端發送一個cookie 而後瀏覽器將Cookie保存。cookie有兩種保存方式,一種是瀏覽器會將cookie保存在內存中,還有一種是保存在客戶端的硬盤中,以後每次http請求瀏覽器都會將cookie發送給服務器端。具體流程以下: 客戶端提交一個HTTP請求給服務端 服務端這個時候作了兩件事,一個是Set-Cookie,還有一個是提交響應內容給客戶端 客戶端再次向服務器請求時會在請求頭中攜帶一個Cookie 服務端提交響應內容給客戶端舉例:分登陸以前和登陸後,登陸前服務端給瀏覽器一個Cookie,可是這個Cookie裏面沒有用戶信息,可是登陸成功以後,服務端給瀏覽器一個Cookie,這個時候的Cookie已經記錄了用戶的信息,在系統內任意訪問,能夠實現免登陸。Cookie的生存週期? Cookie在生成時就會被指定一個maxAge值,這就是Cookie的生存週期,在這個週期內Cookie有效,超出週期Cookie就會被清除。有些頁面將Cookie的生存週期設置爲「0」或負值,這樣在關閉瀏覽器時,就立刻清除Cookie,不會記錄用戶信息,更加安全。能夠總結一下: a、若是maxAge屬性爲正數,則表示該Cookie會在maxAge秒以後自動失效。瀏覽器會將maxAge爲正數的Cookie持久化,即寫到對應的Cookie文件中。不管客戶關閉了瀏覽器仍是電腦,只要還在maxAge秒以前,登陸網站時該Cookie仍然有效。 b、若是maxAge爲負數,則表示該Cookie僅在本瀏覽器窗口以及本窗口打開的子窗口內有效,關閉窗口後該Cookie即失效。maxAge爲負數的Cookie,爲臨時性Cookie,不會被持久化,不會被寫到Cookie文件中。Cookie信息保存在瀏覽器內存中,所以關閉瀏覽器該Cookie就消失了。Cookie默認的maxAge值爲–1。 c、若是maxAge爲0,則表示刪除該Cookie。Cookie機制沒有提供刪除Cookie的方法,所以經過設置該Cookie即時失效實現刪除Cookie的效果。失效的Cookie會被瀏覽器從Cookie文件或者內存中刪除:Cookie有哪些缺陷? a、數量受到限制。一個瀏覽器能建立的 Cookie 數量最多爲 300 個,而且每一個不能超過 4KB,每一個 Web 站點能設置的 Cookie 總數不能超過 20 個 b、安全性沒法獲得保障。一般跨站點腳本攻擊每每利用網站漏洞在網站頁面中植入腳本代碼或網站頁面引用第三方法腳本代碼,均存在跨站點腳本攻擊的可能。在受到跨站點腳本攻擊時,腳本指令將會讀取當前站點的全部 Cookie 內容(已不存在 Cookie 做用域限制),而後經過某種方式將 Cookie 內容提交到指定的服務器(如:AJAX)。一旦 Cookie 落入攻擊者手中,它將會重現其價值。 c、瀏覽器能夠禁用Cookie,禁用Cookie後,也就沒法享有Cookie帶來的方便。