1. 程式人生 > >HTTP介紹及方法狀態碼

HTTP介紹及方法狀態碼

固定 客戶 tex trace 頁面 dex 建立 客戶端 沖突

import socket
#創建一個socket對象
sk = socket.socket()
#綁定ip和端口
sk.bind(("127.0.0.1", 8050))
#監聽
sk.listen()
#等待連接
while True:
    conn,addr=sk.accept()
    #接收數據
    data = conn.recv(1024)
    #打印接收的數據
    print(data)
    #發送數據
    conn.send(b"ok")
    #斷開連接
    conn.close()

b‘GET / HTTP/1.1

Host: 127.0.0.1:8050

Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8\

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

b‘‘

以上為請求頭

1.客戶端連接到web服務端

一個http客戶端,通常是瀏覽器,與web服務器的http端口(默認為80)建立一個tcp套接字連接.列如,

http://www.luffycity.com

2.發送HTTP請求

通過tcp套接字,客戶端向web服務器發送一個文本的請求報文,一個請求報文有請求行,請求頭部,空行和請求數據4部分組成

3.服務器接收請求並返回HTTP響應

web服務器解析請求,定位請求資源,服務器將資源副本寫到tcp套接字,由客戶端讀取,一個響應由狀態行,響應頭部,空行和響應數據4部分組成

4.釋放連接tcp連接

若connection模式為close,則服務器主動關閉tcp連接,客戶端被動連接‘,釋放tcp連接connection模式為keepalive,則該連接會保持一段時間,在該時間內可以繼續接受請求

5.客戶端瀏覽器解析HTML內容

客戶端瀏覽器首先解析狀態行,查看表明請求是否成功的狀態代碼,然後解析每一個響應頭,響應頭告知一下為若幹字節的HTML文檔和文檔的字符集,客戶端瀏覽器讀取響應數據HTML,根據HTML的語法對齊進行格式化,並在瀏覽器窗口中顯示

在瀏覽器地址欄鍵入URL,接下回車之後會經歷以下流程:

1.瀏覽器向DNS服務器請求解析該URL中的域名所對應的IP地址:

2.解析出ip地址後,根據該IP地址和默認端口80,和服務器建立TCP連接

3.瀏覽器發出讀取文件(URL中域名後面部分對應的文件)的HTTP請求,該請求報文作為TCP三次握手的第三個報文的數據發送給服務器

4.服務器對瀏覽器請求做出響應,並把對應的html文本發送給瀏覽器

5.釋放TCP連接

6.瀏覽器將該html文本並顯示內容

推薦用書HTTP權威指南

HTTP請求方法 方式8種

  1.get:獲取到一個頁面

  2.head

  3.post:提交數據

  4.put:向指定位置上傳最新內容

  5.delete:請求服務器刪除request--url所標識的資源

  6.trace:回復顯示器收到的請求,主要用於測試或診斷

  7.options:使服務器傳回資源所支持的所有http請求方法,用""雙引號來代替資源名稱,向web服務器發送options請求,可以測試服務器功能是否正常運作

  8.connect:http/1.1協議中預留給能夠將連接改為管道方式的代理服務器,通常用於ssl加密服務器的連接(經由非加密的http代理服務器)

HTTP狀態碼

狀態代碼的第一個數字代表當前響應的類型:

  1. 1xx消息---請求已被服務器接收,繼續處理

  2. 2xx消息----請求已成功被服務器接收,處理,並接受

  3. 3xx重定向-----需要後續操作才 能完成這一請求‘

  4. 4xx請求錯誤-----------請求含有詞法錯誤或者無法被執行

  5. 5xx服務器錯誤------服務器在處理某個正確請求時發生錯誤

URL

  超文本傳輸協議(HTTP)的統一資源定位符將從因特網獲取信息的五個基本元素包括在一個簡單的地址中:

*傳送協議

*層級URL標記符號(為[//]固定不變)

*訪問資源需要的憑證信息(可省略)

*服務器.(通常為域名,有時為IP地址)

*端口號(以數字方式表示,若為http的默認值‘80可省略‘)

*路徑.(以‘/‘字符區別路徑中的每一個目錄名稱)

*查詢.(get模式的窗體參數,以"?"字符為起點,每個參數以shift鍵+數字7鍵隔開,再以"="分開參數名稱與數據,通常以utf-8的URL編碼,避開字符沖突的問題)

*片段 以#號鍵字符為起點

列子http://www.luffycity.com:80/news/index.html?id=250&page=1

其中http是協議

www.luffycity.com是服務器

80,是服務器上的網絡端口號

/news/index.html是路徑

?id=250&page=1是查詢

技術分享圖片

HTTP介紹及方法狀態碼