什么是 HTTP 误阻?
超文本傳輸協(xié)議(HTTP)的設(shè)計目的是保證客戶端與服務(wù)器之間的通信。
HTTP 的工作方式是客戶端與服務(wù)器之間的請求-應答協(xié)議究反。
web 瀏覽器可能是客戶端狼速,而計算機上的網(wǎng)絡(luò)應用程序也可能作為服務(wù)器端卦停。
舉例:客戶端(瀏覽器)向服務(wù)器提交 HTTP 請求向胡;服務(wù)器向客戶端返回響應。響應包含關(guān)于請求的狀態(tài)信息以及可能被請求的內(nèi)容惊完。
兩種 HTTP 請求方法:GET 和 POST
在客戶機和服務(wù)器之間進行請求-響應時僵芹,兩種最常被用到的方法是:GET 和 POST小槐。
GET - 從指定的資源請求數(shù)據(jù)凿跳。
POST - 向指定的資源提交要被處理的數(shù)據(jù)。
GET 方法
請注意苟径,查詢字符串(名稱/值對)是在 GET 請求的 URL 中發(fā)送的:
/test/demo_form.php?name1=value1&name2=value2
有關(guān) GET 請求的其他一些注釋:
- GET 請求可被緩存
- GET 請求保留在瀏覽器歷史記錄中
- GET 請求可被收藏為書簽
- GET 請求不應在處理敏感數(shù)據(jù)時使用
- GET 請求有長度限制
- GET 請求只應當用于取回數(shù)據(jù)
POST 方法
請注意躬审,查詢字符串(名稱/值對)是在 POST 請求的 HTTP 消息主體中發(fā)送的
POST /test/demo_form.php HTTP/1.1
Host: w3cschool.cc
name1=value1&name2=value2
有關(guān) POST 請求的其他一些注釋:
- POST 請求不會被緩存
- POST 請求不會保留在瀏覽器歷史記錄中
- POST 不能被收藏為書簽
- POST 請求對數(shù)據(jù)長度沒有要求
比較 GET 與 POST
\ | GET | POST |
---|---|---|
后退按鈕/刷新 | 無害 | 數(shù)據(jù)會被重新提交(瀏覽器應該告知用戶數(shù)據(jù)會被重新提交)。 |
書簽 | 可收藏為書簽 | 不可收藏為書簽 |
緩存 | 能被緩存 | 不能緩存 |
編碼類型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded or multipart/form-data蟆盐。為二進制數(shù)據(jù)使用多重編碼承边。 |
歷史 | 參數(shù)保留在瀏覽器歷史中。 | 參數(shù)不會保存在瀏覽器歷史中蛔糯。 |
對數(shù)據(jù)長度的限制 | 是的蚁飒。當發(fā)送數(shù)據(jù)時萝喘,GET 方法向 URL 添加數(shù)據(jù)淮逻;URL 的長度是受限制的(URL 的最大長度是 2048 個字符)。 | 無限制阁簸。 |
對數(shù)據(jù)類型的限制 | 只允許 ASCII 字符爬早。 | 沒有限制。也允許二進制數(shù)據(jù)。 |
安全性 | 與 POST 相比饶米,GET 的安全性較差咙崎,因為所發(fā)送的數(shù)據(jù)是URL 的一部分伊滋。在發(fā)送密碼或其他敏感信息時絕不要使用 GET 筒主! | POST 比 GET 更安全,因為參數(shù)不會被保存在瀏覽器歷史或 web 服務(wù)器日志中槐壳。 |
可見性 | 數(shù)據(jù)在 URL 中對所有人都是可見的。 | 數(shù)據(jù)不會顯示在 URL 中鞋真。 |
其他 HTTP 請求方法
方法 | 描述 |
---|---|
HEAD | 與 GET 相同崇堰,但只返回 HTTP 報頭,不返回文檔主體涩咖。 |
PUT | 上傳指定的 URI 表示海诲。 |
DELETE | 刪除指定資源。 |
OPTIONS | 返回服務(wù)器支持的 HTTP 方法檩互。 |
CONNECT | 把請求連接轉(zhuǎn)換到透明的 TCP/IP 通道特幔。 |