日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HTTP 协议(详解)

發(fā)布時(shí)間:2023/12/18 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTTP 协议(详解) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

HTTP協(xié)議簡介:HTTP協(xié)議是Hyper Text Transfer Protocol(超文本傳輸協(xié)議)的縮寫,是用于萬維網(wǎng)(www.world wide web)服務(wù)器與本地瀏覽器之間傳輸文本的傳輸協(xié)議。

http請求協(xié)議與相應(yīng)協(xié)議HTTP協(xié)議包含瀏覽器發(fā)送數(shù)據(jù)到服務(wù)器需要遵循的請求協(xié)議與服務(wù)器發(fā)送數(shù)據(jù)到瀏覽器需要遵循的請求協(xié)議。用于HTTP協(xié)議交互的信被稱為報(bào)文。請求端的HTTP報(bào)文做請求報(bào)文,服務(wù)端做響應(yīng)報(bào)文。HTTP協(xié)議特性:(1)基于TCP/IPHTTP協(xié)議是基于TCP/IP協(xié)議之上的應(yīng)用層協(xié)議。(2)基于請求-響應(yīng)模式HTTP協(xié)議規(guī)定:請求從客戶端發(fā)出,最后服務(wù)器端響應(yīng)請求并返回。換句話說,肯定是先從客戶端開始建立通信的,服務(wù)器端在沒有收到請求之前不會(huì)發(fā)送響應(yīng)。HTTP協(xié)議是一種無狀態(tài)短鏈接協(xié)議。是基于TCP/IP協(xié)議的應(yīng)用層協(xié)議。一次請求一次響應(yīng)。

?

請求協(xié)議:

請求格式:

  

請求協(xié)議包括:請求首行:請求方式 url 請求協(xié)議版本號請求頭 : key:value請求體 :里面放數(shù)據(jù)。

總結(jié):
a.請求協(xié)議由請求首行和請求頭、請求體組成。
b.請求首行是由:請求方式(GET/POST) HTTP協(xié)議(HTTP/1.1) 請求IP地址
c.請求首行與請求頭之間用一個(gè)\r\n隔開,請求頭和請求體之間用兩個(gè)(\r\n\r\n)隔開(每個(gè)請求頭之間用一個(gè)\r\n隔開)
d.Cookie:也放在請求頭中。

如果要保持連接,設(shè)置成長連接,可以加一個(gè)請求頭(服務(wù)器客戶端都要設(shè)置):Connection:keep-alive 服務(wù)器和客戶端都要設(shè)置

?

請求方式: get與post請求

在服務(wù)端的存放位置:get 提交的數(shù)據(jù)會(huì)放在url(路徑)之后,以?分割url和傳輸數(shù)據(jù),參數(shù)之間以&相連,(一般服務(wù)端收到數(shù)據(jù)是在請求首行中。)post提交的數(shù)據(jù)會(huì)放在HTTP的請求體當(dāng)中。
小結(jié):GET請求的數(shù)據(jù)是放在請求首行中的:跟在請求方式后面。 所以請求首航:GET/POST 請求路徑 /r/n請求地址 如果是在form表單中發(fā)送了GET請求的話,所填的數(shù)據(jù)會(huì)以xx%&xx=xx的格式掛在URL之后的。POST請求的數(shù)據(jù)是放在請求體中的:儲(chǔ)存格式是以xx=xx%&xx=xx的格式儲(chǔ)存的。

?

?

?

響應(yīng)協(xié)議:

相應(yīng)協(xié)議包括:相應(yīng)首行: 協(xié)議版本(HTTP://1.1) 狀態(tài)碼(200) OK(狀態(tài)碼的原因短句)\r\n響應(yīng)頭:Content-Length: 363Content-Type: text/html。。。 響應(yīng)體:服務(wù)端發(fā)給客戶端的數(shù)據(jù)。

響應(yīng)狀態(tài)碼

狀態(tài)碼的值是當(dāng)客戶端向服務(wù)器端發(fā)送請求時(shí),返回的請求結(jié)果。借助狀態(tài)碼,用戶可以知道服務(wù)器端是否正常請求還是出現(xiàn)了狀態(tài)嗎200 ok ,以3位數(shù)字和原因組成。

?

?

代碼演示:

?

?

?

?

?

wsgiref的作用

WSGI(Web Server Gateway Interface): wsgiref模塊,是python基于WSGI協(xié)議開發(fā)的服務(wù)模塊。最簡單的Web應(yīng)用,就是先把HTML用文件保存好。 用一個(gè)現(xiàn)成的HTTP服務(wù)器軟件,接受用戶請求,從文件中讀取HTML,返回給客戶端。但是,接收HTML請求,解析HTML請求,發(fā)送HTML請求都比較費(fèi)時(shí),所以這些都可以交給基于WSGI協(xié)議的wsgiref模塊來完成。 我們只需要專注于用python生成HTML文檔。

?

?

from wsgiref.simple_server import make_serverdef application(environ,start_response):start_response('200 OK',([('Content-Type','text/html')]))return [b"<a href='http://www.baidu.com'>baidu</a>"] // 給客戶端返回的數(shù)據(jù)// 接受請求的端口和IP地址,默認(rèn)為本機(jī)地址,如果收到客戶端請求,執(zhí)行application函數(shù) httpd = make_server('',8000,application)// 夯住,等待客戶端發(fā)送請求 httpd.serve_forever()如果打印environ: ctrl+f:"PATH_INFO" 打印請求路徑:path=environ.get('PATH_INFO')print(path) //默認(rèn)是‘/’根路徑。這樣就可以在application函數(shù)中判斷,如果path==‘/login/’,就給客戶端返回一段login.html字符串, 如果path=='/index/',就給他返回首頁的index.html字符串.**********************定義路徑******************************* urlpatterns = [('/login/',login),('/index/',index),('/reg/',reg) ] 可以定義一個(gè)列表,列表中寫路徑與函數(shù)的對應(yīng)關(guān)系,走到對應(yīng)的路徑,執(zhí)行對應(yīng)的函數(shù)。 函數(shù)可以定義。 // 獲取用戶訪問的url current_path = environ.get('PATH_INFO')func = None for key,item in urlpatterns:if key == 'current_path':func = itembreak//匹配上URL,執(zhí)行對應(yīng)函數(shù),返回相應(yīng)的html頁面,否則返回404沒有找的頁面 if func:ret = func()return [ret] else:return [b"<h1>404</h1>"]//優(yōu)化代碼,可以將所有的函數(shù)放到views文件中。//url也可以放到urls文件中。//在創(chuàng)建一個(gè)templates文件夾單存html文件。

?

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/zsdbk/p/9206497.html

總結(jié)

以上是生活随笔為你收集整理的HTTP 协议(详解)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。