首頁  >  文章  >  web前端  >  什麼是HTTP協議

什麼是HTTP協議

一个新手
一个新手原創
2017-09-19 10:06:094147瀏覽

HTTP 協議簡單介紹

HTTP協議是超文本傳輸協議,它是基於TCP/IP進行通信協議來進行資料傳遞

特點:
1. 簡單快速,當客戶端向伺服器端發起請求時,只需傳輸請求方法和路徑。請求方法常用的有POST、GET等。每個方法都規定了客戶與伺服器聯繫的類型不同。由於HTTP協定簡單,所以通訊速度快
2. 靈活:可以傳輸任意類型的資料物件。傳輸類型由Content-Type加以標記
3. 無連線:限制每次連線只處理一個請求。伺服器處理完客戶端的請求,在收到客戶端的應答之後便會中斷連線
4. 無狀態:HTTP是無狀態協定。無狀態指的是協議對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的信息,則必須重傳,這樣可能導致每次連接傳送的數據量增大,另一個方面,在伺服器不需要其他信息的時候它的應答就會很迅速
5. 支援B/S以及C/S模式

URL

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,即問號後面

Request


#HTTP的請求訊息Request主要有以下幾個部分組成:
* 請求行:請求方法| URL | 協定版本
* 請求頭部:請求頭包含許多相關的客戶端環境和請求正文的有用資訊
* 請求正文: 請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經結束,接下來的是請求正文。請求正文中可以包含客戶提交的查詢字串資訊

Response

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、HEAD
HTTP 1.1 新增了五种请求方法 :OPTIONS、PUT、DELETE、TRACE、CONNECT
GET - 请求指定的页面信息,并返回实体主体
HEAD - 类似于GET请求,但是返回的只有报头
POST - 向指定的资源提交数据进行处理请求
PUT - 从客户端向服务器传送的数据取代指定文件的内容DELETE - 请求服务器删除指定的页面
CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS - 允许客户端查看服务器性能
TRACE - 回显服务器收到的请求,主要用于测试或诊断。

GET與POST的區別

  1. 資料提交:GET的請求資料會放在URL之後,使用&號進行連接,但POST的請求資料會放在HTTP包內

  2. 傳輸資料大小:由於一般的瀏覽器對於URL的長度是有限制的,所以使用GET請求數據會收到大小的限制,但是POST是將資料放在包內,即沒有大小限制

  3. #安全性:GET提交資料在URL中,可以被快取從而回去資料

附註:
1. HTTP協定沒有對傳輸的資料大小進行限制,HTTP協定規範也沒有對URL長度進行限制。
2. HTTP的GET,POST,SOAP協定都是在http上執行的

(1)GET:請求參數是作為一個key/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一般用於更新資源信息.

#

以上是什麼是HTTP協議的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn