1. 程式人生 > >web與網路http/tcp/ip

web與網路http/tcp/ip

http:基於請求,響應的無狀態的協議

http無狀態性與tcp短連結:一次tcp連線,只有一個http請求和一個http響應

http無狀態性與tcp長連結:一次tcp連線,有多個http請求和多個http響應、

--------------------------------------------------------------------------------------------------

http的無狀態?

建立連線/關閉連線,http協議沒有一個內建機制來維護兩個請求之間的狀態,會話控制允許web伺服器跟蹤同一個瀏覽器使用者的連續請求,實現記錄使用者的狀態

如何解決http的無狀態?

如何實時的記錄該瀏覽器使用者傳送的連續的請求呢?

1)利用隱藏域

2)利用url字串進行引數傳遞

均有瀏覽器傳送的sessionid給伺服器,伺服器通過sessionid查使用者的狀態

【服務端語言呢,都是用來做http響應的,因此哦,響應頭啦,就是作為服務端開發的人要關心的哦】

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------http請求(瀏覽器):

1)起始行:請求方法/請求資源/http版本

2)請求頭:瀏覽器客戶端資訊

3)空行

4)正文

http響應(伺服器):

1)起始行:http版本/響應碼/響應訊息

2)響應頭:服務端資訊,設定http  cookie,

3)空行

4)正文:html文件

-----------------------------------------------------------------------

如何解決http的無狀態?通過會話控制

1cookie:儲存在客戶端(記憶體/磁碟)

2session:儲存在伺服器端

========================================================================

cookie

1工作原理

客戶端第一次通過http請求訪問伺服器,伺服器觀察到客戶第一次訪問,伺服器在響應時在響應頭為其響應一個cookie,

客戶以後在通過http請求訪問伺服器時,會攜帶對應的cookie。,伺服器根據客戶端傳來的cookie區分使用者,

cookie在伺服器的響應頭中設定

服務端響應cookie的內容:

set-cookie

name:設定cookie的名稱

value:設定cookie的值,通過$_COOKIE['name'],

expire:設定cookie的失效日期(會話cookie和持久cookie)

path:指定cookie在web伺服器的儲存路徑

domain:cookie允許的域名

secure:hhtp/https

2cookie的分類

會話cookie:由session取代,存到快取中(記憶體的瀏覽器程序儲存)(expire=0)

持久cookie:會將資料儲存到磁碟(文字資訊儲存)中(設定了expire)

3php中cookie的使用

setcookie()/setrawcookie()函式/header()來為客戶端設定cookie

這種函式需要在其他資訊被輸出到瀏覽器前呼叫(http正文),因為設定cookie是作為伺服器響應時在http響應頭中的(http響應頭)

刪除cookie:將cookie失效,unset($_cookie['key'])--------瀏覽器自動刪除

訪問cookie$_COOKIE[]

isset($_COOKIE['key']):用來判斷key的cookie是否存在