1. 程式人生 > >http協議解析(http請求方法,http狀態碼)

http協議解析(http請求方法,http狀態碼)

http即超文字傳輸協議,是一種詳細規定了瀏覽器和全球資訊網伺服器之間相互通訊的規則,它是全球資訊網交換資訊的基礎,它允許將html(超文字標記語言)文件從web伺服器傳送到web瀏覽器

發起http請求

當在瀏覽器地址中輸入一個url,並按回車鍵後就發起了這個http請求,很快就會看到這個請求的返回結果

url(統一資源定位符)也被稱為網頁地址,是網際網路標準的地址。url的標準格式如下

http://www.xxx.com/post/httpxy.html

協議://伺服器ip:埠】/路徑/【?查詢】

其實也可以藉助很多工具來發起http請求,列如,在linux系統中的curl命令。或者嚴格的說,瀏覽器也屬於

http工具的一種,在windows中也可以使用curl.exe,但需要另外下載

http是一種無狀態的協議。無狀態是指web瀏覽器與web伺服器之間不需要建立持久的連線,這意味著當一個客戶端向伺服器發出請求,然後web伺服器返回響應,連線就關閉了,在伺服器端不保留連線的有關資訊。也就是說,http請求只能由客戶端發起,而伺服器不能主動向客戶端傳送資料

http請求與響應

http請求:

http響應:與http請求對應的是http響應,http響應也由三部分組成

響應行:其中有http協議版本,狀態碼(200)以及訊息ok

第二行末尾的空白行為響應頭,由伺服器向客戶端傳送

響應體是伺服器向客戶端傳送html

資料

http的請求方法

1get方法用於獲取請求頁面的指定資訊(以實體的格式)。如果請求資源為動態指令碼(非html),那麼返回文字是web容器解析後的html原始碼,而不是原始檔。列如請求index.jsp,返回的不是index.jsp的原始檔,而是經過解析後的html程式碼

(2)head方法除了伺服器不能在響應裡返回訊息主體,其他都與get方法相同,此方法常用來測試超文字連結的有效性。可訪問性和最近的改變。攻擊者編寫掃描工具時,就常用此方法,因為只測試資源是否存在,而不用返回訊息主體,所以速度一定是最快的。

HEAD /index.php HTTP/1.1

HOST:www.xxser.com

(3)POST

post方法與GET方法相似,但最大的區別在於,GET方法沒有請求內容,而

post是由請求內容的。post請求最多用於向伺服器傳送大量的資料。get雖然也能傳送資料,但是有大小的(長度限制),並且get請求會將傳送的資料顯示在瀏覽器端,而post則不會,所以安全性相對來說高一點

列如:上傳檔案,提交留言,只要是向伺服器傳輸大量的資料,通常都會使用post請求

4PUT

put方法用於請求伺服器把請求中的實體儲存在請求資源下,如果請求資源已經在伺服器中存在,那麼將會用此請求中資料替換原先的資料,作為指定資源的最新修改版。如果請求指定資源不存在,將會建立這個資源,且資料位請求正文:請求如下

put /input.txt

HOST:www.xxx.com

Content-Length:6

123456

這段http請求將會在主機根目錄下建立input.txt,內容123456.通常情況下,伺服器都會關閉put方法,以為它會為伺服器建立檔案,屬於危險的方法之一

(5)DELETE

delete方法用於請求源伺服器刪除請求的指定資源,那麼伺服器一般都會關閉此方法,因為客戶端可以刪除檔案操作,屬於危險方法之一

(6)TRACE

被啟用一個遠端的應用層的請求訊息迴路,也就是說,回顯伺服器收到的請求,TRACE方法允許客戶端去了解資料被請求鏈的另一端接收的情況,並且利用那些資料資訊去測試或診斷。

(7)CONNECT

http1.1協議規範保留了CONNECT方法,此方法是為了用於能動態切換到隧道的代理

(8)OPTIONS

OPTIONS方法是用於請求獲得由URI標識的資源在請求/響應的通訊過程中可以使用的功能選項。通過這個方法,客戶端可以在採取具體資源請求之前,決定對該資源採取何種必要措施,或者瞭解伺服器的效能。

HTTP中的請求方法還不止這些,列如WebDAV是一種基於HTTP/1.1協議的通訊協議,它擴充套件了HTTP1.1GETPOST,HEAD等幾個HTTP標準方法以外添加了一些新的方法,使應用程式可直接對Web Server進行讀寫,並支援寫檔案鎖定(Locking)和解鎖(Unlock),檔案複製(Copy),檔案移動(Move)另外,還可以支援檔案的版本控制

http狀態碼

當客戶端發出http請求,伺服器端接收後,會向客戶端傳送響應資訊,其中,http響應中的第一行,最重要的一點就是http的狀態碼

HTTP/1.1 200 OK

此的狀態碼為200,在HTTP協議中表示請求成功。HTTP協議中狀態碼由三位數字組成,第一位數字定義了響應的類別,且只有以下5種:

1xx:資訊提示,表示請求已被成功接收,繼續處理。範圍100~101.

2xx:成功,伺服器成功處理了請求。其範圍為200~206

3xx:重定向,重定向狀態碼用於告訴瀏覽器客戶端,它們訪問的資源已被移動,並告訴客戶端新的資源地址位置。這時,瀏覽器將重新對新資源發起請求,範圍為300~350

4xx:客戶端錯誤狀態碼,有時客戶端會發送一些伺服器無法處理的東西,比如格式錯誤的請求,或者最常見的是,請求一個不存在的URL。其範圍400~415

5xx:有時間客戶端傳送了一條有效請求,但web伺服器自身卻出錯了,可能是web伺服器執行出錯了,或者網站掛了。5XX就是用來描述伺服器內部錯誤的,其範圍500~505.

常見的狀態碼描述如下:
200:客戶端請求成功,是最常見的狀態

302:重定向

404:請求資源不存在,是最常見的狀態

400:客戶端請求有語法錯誤,不能被伺服器所理解

401:請求未經授權

403:伺服器收到請求,但是拒絕提供服務

500:伺服器內部錯誤,是最常見的狀態

503:伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常