不懼面試:HTTP協議(3) - Cookie

不懼面試:HTTP協議(3) - Cookie

v博客前言

先交代下背景,寫這個系列的原因是總結自己遇到的面試題以及可能遇到的題目,更重要的是,今年定的目標是掌握網絡這一塊的知識點,先是搞懂HTTP協議,然後是TCP/IP協議,再就是WCF如何運用這些協議更好地工作。

 

不懼面試:HTTP協議(1) - 基礎掃盲

不懼面試:HTTP協議(2) - 網關、隧道和中繼

不懼面試:HTTP協議(3) - Cookie

不懼面試:HTTP協議(4) - 安全HTTP

不懼面試:HTTP協議(5) - 基本認證機制

持續更新中... 

面試常見題:

  1.Cookie是什麼?★☆

  2.Cookie能做什麼?★☆

  3.Cookie是怎麼分類的?★☆

  4.Cookie的工作原理?★★★

  5.Cookie是怎麼存儲的?★☆

  6.每次訪問網站時,是不是將所有的cookie都發送所有的站點?

  7.cookie與緩存怎麼取捨?★★

  8.cookie的缺點?★★

  9.如何使用cookie?★★★

 

看完這些題目,心中是否有疑惑呢?那就接着看唄,我來幫您解答心中的疑惑o(^▽^)o

 

參考答案:

 

1.Cookie是什麼?★☆

cookie時當前識別用戶,實現持久化會話的最好方式。簡單點說就是服務器知道正在和哪個客戶端通信,以及保持與已識別出的客戶端通信。Cookie的基本思想就是讓瀏覽器積累一組服務器特有的信息,每次訪問服務器時都將這些信息提供給它。

2.Cookie能做什麼?★☆

對連接另一端的用戶有更多的瞭解,並且能在用戶瀏覽頁面時對其進行跟蹤。

3.Cookie是怎麼分類的?★☆

(1)會話cookie。臨時cookie,記錄了用戶訪問站點時的設置和偏好。用戶退出瀏覽器時,會話cookie就被刪除了。

(2)持久cookie。持久cookie的生存時間更長一些;它們存儲在硬盤上,瀏覽器退出,計算機重啓時它們仍然存在。通常會用持久cookie維護某個用戶會週期性訪問的站點的配置文件或登錄名。

唯一區別就是它們的過期時間。如果設置了Discard參數或沒有設置Expires或沒有設置Max-Age參數則說明這個cookie就是一個會話cookie。

4.Cookie的工作原理?★★★

(1)用戶首次訪問Web站點時,Web服務器對用戶一無所知。

(2)Web服務器通過Set-Cookie首部將cookie存放到瀏覽器中的cookie數據庫中。cookie中包含了N個鍵值對,例如Cookie: id=“1234”。cookie中可以包含任意信息,但它們通常都只包含一個服務器爲了進行跟蹤而產生的獨特的識別碼。

(3)將來用戶再次訪問同一站點時,瀏覽器會從cookie數據庫中挑中那個服務器設置的cookie,並在cookie請求首部中(Cookie: id=“1234”)將其傳回給服務器。

(4)服務器可以通過id="1234"這個鍵值對來查找服務器爲其訪問積累的信息(購物歷史、地址信息等)。

注意:cookie並不僅限與ID號。很多Web服務器都會將信息直接保存在cooki中。比如Cookie: name="Tom"; phone="111-2222"

5.Cookie是怎麼存儲的?★☆

瀏覽器負責存儲cookie信息。不同的瀏覽器會以不同的方式來存儲cookie。有的瀏覽器用cookis.txt存儲。有的瀏覽器存儲在高速緩存目錄下獨立的文本文件中。

6.每次訪問網站時,是不是將所有的cookie都發送所有的站點?

不是,瀏覽器通常只向每個站點發送2~3個cookie。原因如下:

(1)對所有這些cookie字節進行傳輸會嚴重降低性能。

(2)cookie中包含的時服務器特有的名值對,對大部分站點來說,大多數cookie都只是無法識別的無用數據。

(3)將所有的cookie發送給所有站點會引發潛在的隱私問題,那些你並不信任的站點也會獲得你只想發給其他站點的信息。

7.cookie與緩存怎麼取捨?★★

cookie是私有的,瀏覽器不希望得到的cookie和其他瀏覽器的cookie相同。一般緩存cookie圖片而不緩存文本。

8.cookie的缺點?★★

存在安全隱患。第三方Web站點使用持久cookie來跟蹤用戶就是對cookie一種最大的濫用。將這種做法與IP地址和Referer首部信息結合在一起,這些營銷公司就可以構建起相當精確的用戶檔案和瀏覽模式信息。

9.如何使用cookie?★★★

Set-Cookie首部用在服務器返回的response中。它有一個強制性的cookie名和cookie值。後面跟着可選的cookie屬性,中間由分號分隔。

Set-Cookie屬性

說明

例子

NAME=VALUE

強制的。NAME和VALUE都是字符序列。Web服務器可以創建任意的NAME=VALUE關聯,在後繼對站點的訪問中會將其送回給Web服務器:

Set-Cookie:Name=Tom

Expires

可選的。日期字符串。定義cookie的實際生存期。一旦過了過期日期,就不再存儲或發佈這個cookie了。

Set-Cookie:Name=Tom; expires=Wednesday,09-Nov-99 20:00:00 GMT

Domain

可選的。瀏覽器只向指定域中的服務器主機名發送cookie。這樣服務器就將cookie限制在了特定的域中。

Set-Cookie:Name=Tom; domain:"cnblogs.com"

Path

可選的。通過這個屬性可以位服務器上特定的文檔分配cookie。

Set-Cookie:Name=Tom; path=/abc用戶訪問http://www.abc123.com 可能獲得一個cookie: Name=Tom

當用戶訪問http://www.abc123.com/test.html  可能獲得兩個cookie,其中一個是之前已經獲得cookie: Name=Tom,另外一個是cookie:page=test。

Secure

可選的。如果包含了這一屬性,就只有在HTTP使用SSL安全連接時纔會發送cookie。

Set-Cookie:Name=Tom; secure

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cookie首部用在瀏覽器發送的request中。它會將所有與域、路徑和安全過濾器相匹配的未過期cookie都發送給這個站點。所有cookie都被組合到一個cookie首部中。

Cookie: Name1=Tom; Name2=Jerry

 

 

不懼面試:HTTP協議(1) - 基礎掃盲

不懼面試:HTTP協議(2) - 網關、隧道和中繼

不懼面試:HTTP協議(3) - Cookie

不懼面試:HTTP協議(4) - 安全HTTP

不懼面試:HTTP協議(5) - 基本認證機制

持續更新中... 

 


作  者: Jackson0714 
出  處:http://www.cnblogs.com/jackson0714/ 

發佈了1 篇原創文章 · 獲贊 8 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章