学习Django
http协议
规则
‘‘‘http协议:超文本传输协议①基于TCP/IP协议基础上的应用层协议,底层实现仍为socket②基于请求-响应模式:通讯一定是从客户端开始,服务器端接受到客户端一定会做出对应响应③无状态:协议不对任何一次通讯状态和任何数据做保存③无连接:一次连接只完成一次请求-响应,请求响应完毕后立即断开连接‘‘‘
http工作原理(事务)
# 一次http操作称之为一个事务,工作过程可分为四步# 1.客户端与服务端建立连接# 2.客户端发生一个http协议指定格式的请求# 3.服务器端接收请求后,响应一个http协议指定格式的响应# 4.客户端将服务器的响应显示展现给用户
请求
‘‘‘请求行:GET|POST(请求方式) /(请求路径) HTTP/1.1(http协议版本)请求头:(了解)请求体:GET 请求体放到请求路径后进行拼接 ????POST会在请求行与请求头结束后,以数据包方式单独发送请求报文# 请求行 ?请求头 ?请求体‘‘‘POST / HTTP/1.1\r\n ???#请求行(必须)Host: 127.0.0.1:8001\r\n Connection: keep-alive\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n\r\nusr=abc&pwd=123 ?#请求体(可选)‘‘‘
响应
‘‘‘响应行(必须):HTTP/1.1(http协议版本) 200(状态码) ok(状态结束) ??????????????????????????1打头:消息通知 ??????????????????????????2打头:请求成功 ??????????????????????????3打头:重定向(重新定向) ??????????????????????????4打头:客户端错误 ??????????????????????????5打头:服务器端错误响应头(可选):(了解)响应体(可选):具体数据注意:响应规则与响应体内容之间还需要一个\r\n标识分割 响应规则:响应行和响应头响应报文:# 响应行 ?响应头 ?响应体‘‘‘HTTP/1.1 200 OK\r\n ?#响应行Content-type:text/html\r\n ?#响应头\r\n Login Success #响应体‘‘‘‘‘‘
import socketPORT = 4396server = socket.socket()server.bind((‘127.0.0.1‘,PORT))server.listen(5)print(‘服务端启动:http://127.0.0.1:%s‘% PORT)while True: ???browser,_ = server.accept() ???data = browser.recv(1024).decode(‘utf-8‘) ???print(data) #一次请求就会获得一次响应,连接不上会一直请求,所以会产生多个响应,超时结束
#serverimport socketPORT = 4396server = socket.socket()server.bind((‘127.0.0.1‘,PORT))server.listen(5)print(‘服务端启动:http://127.0.0.1:%s‘% PORT)while True: ???browser,_ = server.accept() ???data = browser.recv(1024).decode(‘utf-8‘) ???print(data) ???# 要遵循http协议返回数据:响应行(必须) 响应头 响应体 ???browser.send(b‘HTTP/1.1 200 OK\r\n‘) ?# 响应行(必须),以\r\n结束 ???browser.send(b‘Content-type:text/html\r\n‘) # 响应头(可选),服务于响应体 ???browser.send(b‘\r\n‘) ?# 响应规则与响应体内容之间还需要一个\r\n标识分割 ???browser.send(b‘normal msg‘) ?# 响应体(可选) ???browser.send(b‘<h1>hello wold</h1>‘) # 响应体(可选) ???browser.close()
学习Django,http协议,
原文地址:https://www.cnblogs.com/lizeqian1994/p/10468762.html