HTTP協議是一個超文本傳輸協議,它是基于TCP/IP進行通信協議來進行數據傳遞
特點:
1. 簡單快速,客戶端向服務器端發起請求時,只需傳輸請求方法和路徑。請求方法常用的有POST、GET等。每個方法規定了客戶與服務器聯系的類型不同。由于HTTP協議簡單,所以通信速度快
2. 靈活:可以傳輸任意類型的數據對象。傳輸類型由Content-Type加以標記
3. 無連接:限制每次連接只處理一個請求。服務器處理完客戶端的請求,在收到客戶端的應答之后便會斷開連接
4. 無狀態:HTTP是無狀態協議。無狀態指的是協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則必須重傳,這樣可能導致每次連接傳送的數據量增大,另一個方面,在服務器不需要其他信息的時候它的應答就會很迅速
5. 支持B/S以及C/S模式
URL是HTTP使用的統一資源標識符,來傳輸數據以及建立連接。URL是一種特殊類型的URI,全稱為UniformResourceLocator,中文名為統一資源定位符,URL包含以下幾個部分:
如:https://baike.baidu.com:8080/item/url/110640?fr=aladdin
1. 協議/模式部分:它告訴瀏覽器如何處理將要打開的文件。最常用的模式是超文本傳輸協議(Hypertext Transfer Protocol,縮寫為HTTP),這個協議可以用來訪問網絡。其他協議如下:
http——超文本傳輸協議資源
https——用安全套接字層傳送的超文本傳輸協議
ftp——文件傳輸協議
mailto——電子郵件地址
ldap——輕型目錄訪問協議搜索
file——當地電腦或網上分享的文件
news——Usenet新聞組
gopher——Gopher協議
telnet——Telnet協議
在上面的例子中協議部分就是https
2. 域名部分:上面的域名即為:baike.baidu.com
3. 端口部分:跟在域名后面的即為端口號,端口跟域名之間使用:分割,端口不是一個URL必須的部分,如果省略端口號,就會采用默認端口
4. 文件名部分:/item/url/110640
5. 參數部分:fr=aladdin,即問號后面
HTTP的請求消息Request主要有以下幾個部分組成:
* 請求行 : 請求方法 | URL | 協議版本
* 請求頭部 :請求頭包含許多有關的客戶端環境和請求正文的有用信息
* 請求正文 : 請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字符串信息
HTTP響應消息Response由以下幾個部分組成:
* 狀態行 : 協議版本 | 狀態碼 | 狀態消息
* 響應報頭 : Date 、Content-Type等等
* 響應正文 : 服務器端返回數據
狀態碼由三位數字組成,第一個數字定義了響應的類別
* 1xx:指示消息,表示請求已接收,繼續處理
* 2xx:成功,表示請求已被成功接收
* 3xx:重定向,表示要晚上請求必須更進一步的操作
* 4xx:客戶端錯誤,表示請求有語法錯誤或者無法實現
* 5xx:服務端錯誤,表示服務器端未能實現合法的請求
常見狀態碼:
200 - ok - 請求成功400 - Bad Request - 客戶端請求有語法錯誤,不能被服務器理解401 - Unauthorized - 請求未經授權403 - Forbidden - 服務器收到請求,但是拒絕提供服務404 - Not Found - 請求資源不存在500 - Internal Server Error - 內部服務器錯誤503 - Server Unavaliable - 服務器不可用請求方法
HTTP 1.0 定義了三種請求方法 :GET、POST、HEADHTTP 1.1 新增了五種請求方法 :OPTIONS、PUT、DELETE、TRACE、CONNECT
GET - 請求指定的頁面信息,并返回實體主體HEAD - 類似于GET請求,但是返回的只有報頭POST - 向指定的資源提交數據進行處理請求PUT - 從客戶端向服務器傳送的數據取代指定文件的內容DELETE - 請求服務器刪除指定的頁面CONNECT - HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。OPTIONS - 允許客戶端查看服務器性能TRACE - 回顯服務器收到的請求,主要用于測試或診斷。GET與POST的區別
數據提交:GET的請求數據會放在URL之后,使用 號進行連接,但POST的請求數據會放在HTTP包內
傳輸數據大?。河捎谝话愕臑g覽器對于URL的長度是有限制的,所以使用GET請求數據會收到大小的限制,但是POST是將數據放在包內,即沒有大小限制
安全性:GET提交數據在URL中,可以被緩存從而回去數據
注:
1. HTTP協議沒有對傳輸的數據大小進行限制,HTTP協議規范也沒有對URL長度進行限制。
2. HTTP的 GET,POST,SOAP協議都是在http上運行的
(1)GET:請求參數是作為一個key/html' target='_blank'>value對的序列(查詢字符串)附加到URL上的
查詢字符串的長度受到web瀏覽器和web服務器的限制(如IE最多支持2048個字符),不適合傳輸大型數據集同時,它很不安全
(2)POST:請求參數是在http標題的一個不同部分(名為entity body)傳輸的,這一部分用來傳輸表單信息,因此必須將Content-type設置為:application/x-www-form- urlencoded。post設計用來支持web窗體上的用戶字段,其參數也是作為key/value對傳輸。
但是:它不支持復雜數據類型,因為post沒有定義傳輸數據結構的語義和規則。
(3)SOAP:是http post的一個專用版本,遵循一種特殊的xml消息格式
Content-type設置為: text/xml 任何數據都可以xml化。
HTTP協議定義了很多與服務器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用于描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GET和POST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息.
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答