Java程序員必須掌握的網站知識 —— HTTP

介紹

HTTP協議是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web )服務器傳輸超文本到本地瀏覽器的傳送協議。

HTTP是一個基於TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。

HTTP是一個屬於應用層的面向對象的協議。

主要特點

1、簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯繫的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

2、靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

3、無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。

4、無狀態:HTTP協議是無狀態協議。http協議是無狀態的,同一個客戶端的這次請求和上次請求是沒有對應關係,對http服務器來說,它並不知道這兩個請求來自同一個客戶端。 爲了解決這個問題, Web程序引入了Cookie機制來維護狀態.

5、支持B/S及C/S模式。

小編是一個有着5年工作經驗的java程序員,對於java,自己有做資料的整合,一個完整學習java的路線,學習資料和工具,相信這裏有很多學習java的小夥伴,我創立了一個2000人學習扣羣,479121291。每晚都有java的直播課程。無論是初級還是進階的小夥伴小編我都歡迎!

HTTP URL

HTTP使用統一資源標識符(Uniform Resource Identifiers, URI)來傳輸數據和建立連接。URL是一種特殊類型的URI,包含了用於查找某個資源的足夠的信息

URL,全稱是UniformResourceLocator, 中文叫統一資源定位符,是互聯網上用來標識某一處資源的地址。

URI vs URL

首先,URI,是統一資源標識符,用來唯一的標識一個資源。而URL是統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。而URN,統一資源命名,是通過名字來標識資源,比如mailto:[email protected]。也就是說,URI是以一種抽象的,高層次概念定義統一資源標識,而URL和URN則是具體的資源標識的方式。URL和URN都是一種URI;URL是URI的一種。但也不是所有的URI都是URL。

URL 格式http://host['':''port][abs_path]http:表示要通過HTTP協議來定位網絡資源;host:表示合法的Internet主機域名或者IP地址;port:指定一個端口號,爲空則使用缺省端口80;abs_path:指定請求資源的URI;如果URL中沒有給出abs_path,那麼當它作爲請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。

請求消息Request

HTTP請求消息格式:

請求行(request line)、請求頭部(header)、空行和請求數據四個部分組成。

請求行<Method> <Request-URI> <HTTP-Version> CRLFMethod:表示請求方法URI-Request:表示一個統一資源標識符HTTP-Version:表示請求的HTTP協議版本CRLF:表示回車和換行(除了作爲結尾的CRLF外,不允許出現單獨的CR或LF字符)。

請求方法:根據HTTP標準,HTTP請求可以使用多種請求方法。HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

GET:請求指定的頁面信息,並返回實體主體。HEAD:類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。PUT:從客戶端向服務器傳送的數據取代指定的文檔的內容。DELETE:請求服務器刪除指定的頁面。CONNECT:HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器。OPTIONS:返回對應URL能訪問的METHODS。TRACE:回顯服務器收到的請求,主要用於測試或診斷。

請求頭部後文詳述。。。

空行空行,請求頭部後面的空行是必須的

請求數據請求數據也叫主體,可以添加任意的其他數據。

響應消息Response

HTTP響應也由四個部分組成,分別是:狀態行、消息報頭、空行和響應正文。

狀態行狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。『<HTTP-Version> <Status-Code> <Reason-Phrase> CRLF』HTTP-Version:表示服務器HTTP協議的版本Status-Code:服務器發回的響應狀態代碼Reason-Phrase:表示狀態代碼的文本描述

狀態碼:狀態代碼有三位數字組成,第一個數字定義了響應的類別,共分五種類別:① 1xx:指示信息--表示請求已接收,繼續處理② 2xx:成功--表示請求已被成功接收、理解、接受③ 3xx:重定向--要完成請求必須進行更進一步的操作④ 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現⑤ 5xx:服務器端錯誤--服務器未能實現合法的請求

常見狀態碼:

302 Found  重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發出新的Request。

304 Not Modified  代表上次的文檔已經被緩存了, 還可以繼續使用,  例如打開博客園首頁, 發現很多 Response 的status code 都是304

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章