1. 程式人生 > >go web by the one.一些常見知識記錄

go web by the one.一些常見知識記錄

錯誤 請求方法 odin 客戶 區別 賬號 AD ont -a

HTTP請求包(瀏覽器信息)

我們先來看看Request包的結構, Request包分為3部分,第一部分叫Request line(請求行), 第二部分叫Request header(請求頭),第三部分是body(主體)。header和body之間有個空行,請求包的例子所示:

GET /domains/example/ HTTP/1.1		//請求行: 請求方法 請求URI HTTP協議/協議版本
Host:www.iana.org				//服務端的主機名
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4			//瀏覽器信息
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8	//客戶端能接收的mine
Accept-Encoding:gzip,deflate,sdch		//是否支持流壓縮
Accept-Charset:UTF-8,*;q=0.5		//客戶端字符編碼集
//空行,用於分割請求頭和消息體
//消息體,請求資源參數,例如POST傳遞的參數
HTTP協議定義了很多與服務器交互的請求方法,最基本的有4種,分別是GET,POST,PUT,DELETE。一個URL地址用於描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,增,改,刪4個操作。我們最常見的就是GET和POST了。GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息。

GET和POST的區別:

1.我們可以看到GET請求消息體為空,POST請求帶有消息體。

2.GET提交的數據會放在URL之後,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456。POST方法是把提交的數據放在HTTP包的body中。

3.GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制。

4.GET方式提交數據,會帶來安全問題,比如一個登錄頁面,通過GET方式提交數據時,用戶名和密碼將出現在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼

HTTP的response包,他的結構如下:

HTTP/1.1 200 OK						//狀態行
Server: nginx/1.0.8					//服務器使用的WEB軟件名及版本
Date:Date: Tue, 30 Oct 2012 04:14:25 GMT		//發送時間
Content-Type: text/html				//服務器發送信息的類型
Transfer-Encoding: chunked			//表示發送HTTP包是分段發的
Connection: keep-alive				//保持連接狀態
Content-Length: 90					//主體內容長度
//空行 用來分割消息頭和主體
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"... //消息體

Response包中的第一行叫做狀態行,由HTTP協議版本號, 狀態碼, 狀態消息 三部分組成。

狀態碼用來告訴HTTP客戶端,HTTP服務器是否產生了預期的Response。HTTP/1.1協議中定義了5類狀態碼, 狀態碼由三位數字組成,第一個數字定義了響應的類別

  • 1XX 提示信息 - 表示請求已被成功接收,繼續處理
  • 2XX 成功 - 表示請求已被成功接收,理解,接受
  • 3XX 重定向 - 要完成請求必須進行更進一步的處理
  • 4XX 客戶端錯誤 - 請求有語法錯誤或請求無法實現
  • 5XX 服務器端錯誤 - 服務器未能實現合法的請求

go web by the one.一些常見知識記錄