簡介
一直以來http方面的知識都太片面,不太了解,就知道post、get、put、delete,就知道https是加密的,對于具體就不太了解了,這篇文章就是補充http方面的知識(水準有限,沒有高深了解,就是知識的總結)。
http簡單介紹
HTTP協定(HyperText Transfer Protocol,超文本傳輸協定)是網際網路上應用最為廣泛的一種網絡傳輸協定,所有的WWW檔案都必須遵守這個标準。
HTTP是一個基于TCP/IP通信協定來傳遞資料(HTML 檔案, 圖檔檔案, 查詢結果等)。
HTTP三點注意事項:
HTTP是無連接配接:無連接配接的含義是限制每次連接配接隻處理一個請求。伺服器處理完客戶的請求,并收到客戶的應答後,即斷開連接配接。采用這種方式可以節省傳輸時間。
HTTP是媒體獨立的: 這意味着,隻要用戶端和伺服器知道如何處理的資料内容,任何類型的資料都可以通過HTTP發送。用戶端以及伺服器指定使用适合的MIME-type内容類型。
HTTP是無狀态: HTTP協定是無狀态協定。無狀态是指協定對于事務處理沒有記憶能力。缺少狀态意味着如果後續處理需要前面的資訊,則它必須重傳,這樣可能導緻每次連接配接傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
以下圖表展示了HTTP協定通信流程:
HTTP 消息結構
用戶端請求消息
用戶端發送一個HTTP請求到伺服器的請求消息包括以下格式:請求行(request line)、請求頭部(header)、空行和請求資料四個部分組成,下圖給出了請求封包的一般格式。
//執行個體
GET /hello.txt HTTP/1.1 //請求頭:請求方法、url、協定版本。
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
伺服器響應消息
HTTP響應也由四個部分組成,分别是:狀态行、消息報頭、空行和響應正文。
//執行個體
HTTP/1.1 200 OK //狀态行
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain //消息報頭
HTTP請求方法
根據HTTP标準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
get | 請求指定的頁面資訊,并傳回實體主體。(一般對應查詢資料 select <字段名> from <表名>) |
head | 類似于get請求,隻不過傳回的響應中沒有具體的内容,用于擷取報頭 |
post | 向指定資源送出資料進行處理請求(例如送出表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導緻新的資源的建立和/或已有資源的修改。(一般對應建立(添加)資料 insert into…) |
put | 從用戶端向伺服器傳送的資料取代指定的文檔的内容。(對應更新資料 update) |
delete | 請求伺服器删除指定的頁面。(對應删除資料 delete) |
connect | HTTP/1.1協定中預留給能夠将連接配接改為管道方式的代理伺服器。 |
options | 允許用戶端檢視伺服器的性能。 |
trace | 回顯伺服器收到的請求,主要用于測試或診斷。 |
HTTP 響應頭資訊
檢視: https://www.runoob.com/http/http-methods.html
HTTP狀态碼
下面是常見的HTTP狀态碼:
200 - 請求成功
301 - 資源(網頁等)被永久轉移到其它URL
404 - 請求的資源(網頁等)不存在
500 - 内部伺服器錯誤
HTTP狀态碼分類
HTTP狀态碼由三個十進制數字組成,第一個十進制數字定義了狀态碼的類型,後兩個數字沒有分類的作用。HTTP狀态碼共分為5種類型:
HTTP狀态碼分類
分類 | 分類描述 |
---|---|
1** | 資訊,伺服器收到請求,需要請求者繼續執行操作 |
2** | 成功,操作被成功接收并處理 |
3** | 重定向,需要進一步的操作以完成請求 |
4** | 用戶端錯誤,請求包含文法錯誤或無法完成請求 |
5** | 伺服器錯誤,伺服器在處理請求的過程中發生了錯誤 |
具體參照:
https://www.runoob.com/http/http-status-codes.html
HTTP content-type對照表
https://www.runoob.com/http/http-content-type.html
HTTPS簡介
HTTPS(Secure Hypertext Transfer Protocol)安全超文本傳輸協定,協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定
要比http協定安全。
它是一個安全通信通道,它基于HTTP開發,用于在客戶計算機和伺服器之間交換資訊。
它使用安全套接字層(SSL)進行資訊交換,簡單來說它是HTTP的安全版。
它是由Netscape開發并内置于其浏覽器中,用于對資料進行壓縮和解壓操作,并傳回網絡上傳送回的結果。
HTTPS實際上應用了Netscape的安全全套接字層(SSL)作為HTTP應用層的子層。
(HTTPS使用端口443,而不是象HTTP那樣使用端口80來和TCP/IP進行通信。)
SSL使用40 位關鍵字作為RC4流加密算法,
這對于商業資訊的加密是合适的。HTTPS和SSL支援使用X.509數字認證,如果需要的話使用者可以确認發送者是誰。