網絡請求中的cookie與set-Cookie的交互模式的一些問題解析

首先咱們須要思考,不少問題。php

1.當不少人訪問統一個網服務器,服務器如何來區分不一樣的用戶呢?

  :sessionid,sessionid保證了瀏覽器和服務器惟一性的通訊憑證號碼,session保存在服務器上,
    sessionid保存在瀏覽器等客戶端,服務器根據瀏覽器發送來的sessionid做爲一個惟一的key值找到
    對應的用戶,因此說sessionid的惟一性用來區別和查詢用戶信息,所以sessionid的做用不言而喻了吧。
html

2.咱們常常說瀏覽器關閉後session就會被清除,那session有生命週期麼?

:有的,這個是服務器的配置,瀏覽器關閉只是把sessionid給清除了,因此在此打開瀏覽器並請求服務,你的登陸狀態沒法找到,由此你須要從新登陸。
    通常狀況下,瀏覽器若是不刷新或者不從新請求的話,服務器通常會緩存session數據20分鐘左右。
java

3.cookie會被緩存,sessionid保存在cookie中,sessionid必定會被清除麼?

  :不必定,這個須要服務器cookie的設置了,但整體而言,因安全性考量,最好不要緩存sessionid
web

4.cookie保存用戶狀態時須要保存sessionid麼?

  :不須要,保存user_id或者其餘token便可
編程

5.cookie是如何發送到服務器的?

  :使用http請求頭,瀏覽器進行了封裝,但在通常網絡編程時能夠加上。瀏覽器

緩存

GET / HTTP/1.1
Host: www.guancha.cn
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: pgv_pvi=9956446208; pbm_total_match_cookie_281589=1; has_js=1; Hm_lvt_8ab18ec6e3ee89210917ef2c8572b30e=1414852570,1414879794,1414884316,1414901793; Hm_lpvt_8ab18ec6e3ee89210917ef2c8572b30e=1414901793

6.上面的例子中沒有sessionid麼?

  :是的,沒有,sessionid只是一個代稱,這個變量名能夠改變,好比在php中使用phpsessid,
    在java web中jsessionid
安全

7.登陸前有sessionid,登錄後須要從新設置麼?

  :依狀況而定,若是安全性要求較高的,能夠從新生成一個sessionid,另外必須先銷燬以前的一個sessionid
服務器

8.sessionid生成後如何發送到瀏覽器?

  :默認狀況下,服務器會掛載響應消息 set-Cookie來指示瀏覽器更新sessionid,不須要手動更新cookie

如:

HTTP/1.x 200 OK 
X-Powered-By: PHP/5.2.1 
Set-Cookie: TestCookie=something from somewhere; path=/ 
Expires: Thu, 19 Nov 2007 18:52:00 GMT 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Pragma: no-cache 
Content-type: text/html

 

//若是是按照第7問生成的sessionid,這個也不須要手動發送,固然也能夠手動發送

 

 

原文載自——》

相關文章
相關標籤/搜索