HTTP協議的請求方法一共有:8種。分別是:GET、HEAD、PUT、DELETE、POST、OPTIONS、TRACE、CONNECTweb
GET能夠說是最多見的了,它本質就是發送一個請求來取得服務器上的某一資源。資源經過一組HTTP頭和呈現數據(如HTML文本,或者圖片或者視頻等)返回給客戶端。GET請求中,永遠不會包含呈現數據。瀏覽器
HEAD和GET本質是同樣的,區別在於HEAD不含有呈現數據,而僅僅是HTTP頭信息。有的人可能以爲這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,咱們一般使用GET,但這裏用HEAD則意義更加明確。緩存
這個方法比較少見。HTML表單也不支持這個。本質上來說, PUT和POST極爲類似,都是向服務器發送數據,但它們之間有一個重要區別,PUT一般指定了資源的存放位置,而POST則沒有,POST的數據存放位置由服務器本身決定。舉個例子:如一個用於提交博文的URL,/addBlog。若是用PUT,則提交的URL會是像這樣的」/addBlog/abc123」,其中abc123就是這個博文的地址。而若是用POST,則這個地址會在提交後由服務器告知客戶端。目前大部分博客都是這樣的。顯然,PUT和POST用途是不同的。具體用哪一個還取決於當前的業務場景。 向指定資源位置上上傳其最新內容(從客戶端向服務器傳送的數據取代指定文檔的內容)安全
刪除某一個資源。基本上這個也不多見,不過仍是有一些地方好比amazon的S3雲服務裏面就用的這個方法來刪除資源。請求服務器刪除Request-URI所標識的資源。服務器
向服務器提交數據。這個方法用途普遍,幾乎目前全部的提交操做都是靠這個完成。Post 向指定資源提交數據進行處理請求(提交表單、上傳文件),又可能致使新的資源的創建或原有資源的修改post
這個方法頗有趣,但極少使用。它用於獲取當前URL所支持的方法。若請求成功,則它會在HTTP頭中包含一個名爲「Allow」的頭,值是所支持的方法,如「GET, POST」等。返回服務器針對特定資源所支持的HTTP請求方法。也能夠利用向Web服務器發送'*'的請求來測試服務器的功能性測試
回顯服務器收到的請求,用於測試和診斷加密
HTTP/1.1協議中可以將鏈接改成管道方式的代理服務器spa
1.GET是客戶端向服務器發送請求網頁頁面的請求,是向服務器發索取數據的一種請求。POST是客戶端向服務器上傳一些文件的請求,是向服務器提交數據的一種請求。代理
2.GET請求的參數會跟在 URL 後進行傳遞,請求的數據會附在URL以後,以?分割URL和傳輸數據,參數之間以&相連,%XX中的XX爲該符號以16進製表示的ASCII,若是數據是英文字母/數字,原樣發送,若是是空格,轉換爲+,若是是中文/其餘字符,則直接把字符串用BASE64加密。GET 方法提交數據不安全,數據置於請求行,客戶端地址欄可見。Post請求則做爲http消息的實際內容發送給web服務器,數據放置在HTML Header內提交,Post沒有限制提交的數據。Post比Get安全,當數據是中文或者不敏感的數據,則用get,由於使用get,參數會顯示在地址,對於敏感數據和不是中文字符的數據,則用post。POST 方法提交數據安全,數據置於消息主體內,客戶端不可見
3.GET傳輸的數據有大小限制,由於GET是經過URL提交數據,那麼GET可提交的數據量就跟URL的長度有直接關係了,不一樣的瀏覽器對URL的長度的限制是不一樣的。POST 方法提交的數據大小沒有限制。
4.GET請求的數據會被瀏覽器緩存起來,用戶名和密碼將明文出如今URL上,其餘人能夠查到歷史瀏覽記錄,數據不太安全。在服務器端,用Request.QueryString來獲取 Get 方式提交來的數據。POST表示可能修改變服務器上的資源的請求,在服務器端,用Post方式提交的數據只能用 Request.Form 來獲取