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、HEAD HTTP 1.1 新增了五种请求方法 :OPTIONS、PUT、DELETE、TRACE、CONNECT
GET - 请求指定的页面信息,并返回实体主体 HEAD - 类似于GET请求,但是返回的只有报头 POST - 向指定的资源提交数据进行处理请求 PUT - 从客户端向服务器传送的数据取代指定文件的内容DELETE - 请求服务器删除指定的页面 CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS - 允许客户端查看服务器性能 TRACE - 回显服务器收到的请求,主要用于测试或诊断。
資料提交:GET的請求資料會放在URL之後,使用&號進行連接,但POST的請求資料會放在HTTP包內
傳輸資料大小:由於一般的瀏覽器對於URL的長度是有限制的,所以使用GET請求數據會收到大小的限制,但是POST是將資料放在包內,即沒有大小限制
#安全性: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中文網其他相關文章!