http是基於請求與響應。請求由三部分組成,分別是:請求行、消息報頭、請求正文。web
請求行以一個方法符號開頭,以空格分開,後面跟着請求的URI和協議的版本,格式以下:Method Request-URI HTTP-Version CRLF。其中 Method表示請求方法。數據庫
請求方法(全部方法全爲大寫)有多種,各個方法的解釋以下:瀏覽器
(1)GET 請求獲取Request-URI所標識的資源。
(2)POST 在Request-URI所標識的資源後附加新的數據。
(3)HEAD 請求獲取由Request-URI所標識的資源的響應消息報頭。
(4)PUT 請求服務器存儲一個資源,並用Request-URI做爲其標識。
(5)DELETE 請求服務器刪除Request-URI所標識的資源。
(6)TRACE 請求服務器回送收到的請求信息,主要用於測試或診斷。
(7)CONNECT 保留未來使用。
(8)OPTIONS 請求查詢服務器的性能,或者查詢與資源相關的選項和需求。緩存
接下來主要介紹兩種經常使用的請求方法:GET和POST。
安全
1、GET服務器
GET是向服務器發索取數據的一種請求。ide
GET是獲取信息,而不是修改信息,相似數據庫查詢功能同樣,數據不會被修改。
GET請求的參數會跟在url後進行傳遞,請求的數據會附在URL以後,以?分割URL和傳輸數據,參數之間以&相連,%XX中的XX爲該符號以16進製表示的ASCII,若是數據是英文字母/數字,原樣發送,若是是空格,轉換爲+,若是是中文/其餘字符,則直接把字符串用BASE64加密。
GET傳輸的數據有大小限制,由於GET是經過URL提交數據,那麼GET可提交的數據量就跟URL的長度有直接關係了,不一樣的瀏覽器對URL的長度的限制是不一樣的。
GET請求的數據會被瀏覽器緩存起來,用戶名和密碼將明文出如今URL上,其餘人能夠查到歷史瀏覽記錄,數據不×××全。在服務器端,用Request.QueryString來獲取GET方式提交來的數據。性能
2、POST測試
POST是向服務器提交數據的一種請求。加密
POST請求做爲http消息的實際內容發送給web服務器,數據放置在HTML Header內提交,POST沒有限制提交的數據,起限制做用的是服務器的處理程序的處理能力。
POST表示可能修改變服務器上的資源的請求,在服務器端,用Post方式提交的數據只能用Request.Form來獲取。
3、GET與POST的區別
GET是以實體的方式獲得由請求URI所指定資源的信息,若是請求URI只是一個數據產生過程,那麼最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。
POST用來向目的服務器發出請求,要求它接受被附在請求後的實體,並把它看成請求隊列中請求URI所指定資源的附加新子項,POST被設計成用統一的方法實現對現有資源的解釋、向電子公告欄、新聞組、郵件列表或相似討論組發信息、提交數據塊、經過附加操做來擴展數據庫。
POST比GET安全,當數據是中文或者不敏感的數據,則用GET,由於使用GET,參數會顯示在地址,對於敏感數據和不是中文字符的數據,則用POST。