之前的部落格http學習對http協議的具體內容沒有進行詳細的,今天再補充點。
1,http url :格式:schema://host[":"port][abs_path]
schema是表示用的什麼協議,如http ,https,ftp等。
host代表internet主機網域名稱或者ip位址。
port代表埠號,預設埠為80。
abs_path代表資源的路徑。如果沒給出路徑,則以『/』的形式給出。
2,http請求:
格式:請求行 請求報頭 請求正文
請求行:請求方法 請求資源的路徑 請求的http協議版本 分別代表method request-uri http-version crlf 。
請求報頭:
也叫請求訊息,請求訊息和響應訊息都是由開始行(對於請求訊息,開始行就是請求行,對於響應訊息,開始行就是狀態行),訊息報頭,空行(只有crlf的行),訊息正文(可選)組成。
請求報頭允許客戶端向伺服器端傳遞請求的附加資訊以及客戶端自身的資訊。
比較常用的請求報頭有:accept(制定客戶端接受的檔案型別),accept-charset(指定字符集),accept-encoding(指定接受的內容的編碼),accept-language(指定一種語言),authorization,host(host請求報頭域主要用於指定被請求資源的internet主機和埠號)
請求正文:
請求正文與請求訊息中間隔一行,請求正文中可以包含客戶提交的查詢字串資訊等。
請求方法:
請求方法經常見到的有get,post兩種方法,但又不只有這兩種,還有put,delete,head,trace,options.每一種方法都有其相應的功能。get主要負責從伺服器獲取資源資訊,post負責將附加的資料新增到請求中提交到伺服器,put負責將增加資源資訊,delete負責刪除資源。trace :請求伺服器回送收到的請求資訊,主要用於測試或診斷,connect:保留將來使用,options:請求查詢伺服器的效能,或者查詢與資源相關的選項和需求
get,post的區別:
顧名思義,get
就是從伺服器獲取資源,不會修改資料庫的資料,而post則不同,post會向資料庫傳送修改請求,舉個例子,get就如同我們在搜尋框輸入搜尋的關鍵字,通過get方法,將輸入的字新增到url後,傳到伺服器,查詢相關的資源,而post就如我們在乙個註冊頁,填寫資訊,資訊就會通過post方法,將資訊寫在http請求正文中,傳到伺服器,存入並更改資料庫。get能傳的資料比較少,最多1024b,post則能傳送比較大的資料。安全性方面,get方法比post若,因為get方法的資訊都是直接寫在url以明文的方式傳送,而post則可以通過一些方法進行加密寫入請求正文傳送。
3,http響應:
包括:狀態行,響應報頭,響應正文
狀態行由協議版本、數字形式的狀態**、及相應的狀態描述,各元素之間以空格分隔。
附一些狀態**代表的含義:
1xx:指示資訊--表示請求已接收,繼續處理
2xx:成功--表示請求已被成功接收、理解、接受
3xx:重定向--要完成請求必須進行更進一步的操作
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤--伺服器未能實現合法的請求
狀態描述既是對狀態**的描述。如 404 not found 請求的資源不存在。
響應報頭:
常用的響應報頭有location,server.location為重定向接受者到乙個新的位址。server代表伺服器用來處理請求的軟體資訊。
響應正文:伺服器返回的資源的內容。
今天還去了解了一下伺服器和**伺服器。先說說**伺服器吧,**伺服器分幾種,分別有正向**,反向**和透明**。
正向**總結一下就是位於客戶端與原始伺服器之間的伺服器,起到加速訪問的效果,如果**伺服器上有快取的請求的資料,則可以直接返回給客戶端。
反向**與正向**相反,對於客戶端而言**伺服器就像是原始伺服器,並且客戶端不需要進行任何特別的設定,直接傳送請求到反向**伺服器,**伺服器再請求伺服器然後響應請求。
反向**的主要作用是負載均衡,當有多數的客戶端請求原始伺服器時就可以通過不同的**伺服器去響應請求,**伺服器上也可以快取一些靜態的資源,減輕原始伺服器壓力的同時提高響應速度。nginx則是近幾年最火的反向**伺服器。
還有乙個透明**,就不詳細介紹了。
session和cookie
因為http是無狀態的,session和cookie都是用來保持狀態的,session是伺服器端的解決方法,而cookie是客戶端的解決方法。
session:伺服器上為客戶端開闢的儲存空間,第一步:建立session,在伺服器端程式執行的過程中建立,建立session的時候,伺服器會為該session生成唯一的sessionid.第二步:伺服器在響應客戶端請求的時候呼叫session,新增內容。第三步:伺服器將sessionid傳送這客戶端。第四步:客戶端再次請求的時候,帶上sessionid.第五步:伺服器通過請求中的sessionid找到session,並使用。
cookie:客戶端在http請求中將個人資訊傳到伺服器,伺服器響應請求的時候,將個人資訊加到響應頭中,到達客戶端時,將響應頭中的資訊儲存為cookie。客戶端再次請求的時候,會把cookie中的資訊新增到請求頭中傳送到伺服器。
cookie 和session 的區別:
1、cookie資料存放在客戶的瀏覽器上,session資料放在伺服器上。
2、cookie不是很安全,別人可以分析存放在本地的cookie並進行cookie欺騙
考慮到安全應當使用session。
3、session會在一定時間內儲存在伺服器上。當訪問增多,會比較占用你伺服器的效能
考慮到減輕伺服器效能方面,應當使用cookie。
4、單個cookie儲存的資料不能超過4k,很多瀏覽器都限制乙個站點最多儲存20個cookie。
http協議學習二
請求頭 1.請求行 get post head options delete trace put get test 1.html?name xx age http 1.1 附帶引數的容量不能超過1k post 可以在請求內容中新增資料 2.訊息頭 accept text html,image 向伺服...
HTTP協議 學習筆記 二
瀏覽器 web 伺服器 軟體 cdn 爬蟲 tcp ip ip 協議 internet protocol tcp 協議 transmission control protocol dns 網域名稱系統 domain name system uri url url uniform resource l...
HTTP協議學習 (二)基本認證
注 本文 粉字內容為本人新增內容 閱讀目錄 什麼是http基本認證 http基本認證的過程 http基本認證的優點 每次都要進行認證 http基本認證和https一起使用就很安全 http oauth認證 其他認證 客戶端的使用 桌面應用程式也通過http協議跟web伺服器互動,桌面應用程式一般不會...