学习Django,http协议,
学习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\n
Upgrade-Insecure-Requests: 1\r\n
User-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\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8\r\n
\r\n
usr=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 socket
PORT = 4396
server = 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) #一次请求就会获得一次响应,连接不上会一直请求,所以会产生多个响应,超时结束
#server
import socket
PORT = 4396
server = 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协议,的更多相关文章
- 开始学习Django,配置静态登录页面
开始学习Django,配置静态登录页面 准备阶段 众所周知,Django是一个重量级的设备齐全的web开发框架.在学习Django前我们需要具备如下的知识点: python基础编程 并发 网络编程 H ...
- [在学习Django框架之前所需要了解的知识点]
[在学习Django框架之前所需要了解的知识点] Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现 ...
- 总结一下这几天学习django的心得
总结一下这几天学习django的心得 http://www.tuicool.com/articles/jMVB3e 时间 2014-01-12 11:40:11 CSDN博客 原文 http:// ...
- 学习django就看这本书了!django book 2.0中文版
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/29/ 来源:python黑洞网 dj ...
- Python学习---django模板语法180122
django模板语法[Template] 模版的组成: HTML代码+逻辑控制代码 <h1> {{ user_name }} </h1> 逻辑控制代码的组成: 1.变量: ...
- Objective-C学习笔记 利用协议实现回调函数
来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...
- 第一章 Django之学习Django所需知识(3)
所需编程知识 本书读者需要理解基本的面向过程和面向对象编程:流程控制(if, while 和 for),数据结构(列表,哈希表/字典),变量,类和对象. Web 开发经验,正如你所想的,也是非常有帮助 ...
- 小白学习django第一站-环境配置
Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...
- 内网学习之Kerberos协议
学习了解kerberos协议,有助于我们后期理解黄金票据和白银票据的原理 kerberos协议 kerberos是一种由麻省理工大学提出的一种网络身份验证协议.旨在通过使用密钥加密技术为客户端/服务器 ...
随机推荐
- rsa 加密 pkcs#1格式秘钥的格式化
C++调用openssl库生成的秘钥对,通过传输传出来的只有秘钥的内容,没有秘钥的格式.而我们在调用openssl库加密解密时,传入的秘钥是需要包含格式的.C++调用openssl库需要的格式为pkc ...
- mysql基础常用命令
数据库 1查询 Select * From table select host,user,password from mysql.user where user='ybb' and host='%'; ...
- Ecust DIV3 k进制 【暴力不断优化】
K进制 Description 给定一个正整数n,请你判断在哪些进制下n的表示恰好有2位是1,其余位都是0. Input 输入第一行为整数TT,表示有TT组数据(1 \le T \le 50)(1≤T ...
- uva11990 动态逆序对
这题说的是给了一个数组,按照他给的顺序依次删除数,在删除之前输出此时的逆序对个数 我们用Fenwick树 维护这整个数列, C[i]是一个 treap的头, 管理了在树状数组中 能影响他的点,然后我们 ...
- 向SQL Server中导入Excel的数据
1. 手动界面导入Excel数据 同 https://jingyan.baidu.com/article/ce09321b9a0e252bff858ff9.html 首先打开并登陆sql serve ...
- datetime处理日期和时间
datetime.now() # 获取当前datetimedatetime.utcnow() datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime 一.将 ...
- MVC 中的Model对象
最近实在是太忙,客户丢了一个框架,没有任何说明文档,更没有所谓的技术支持,一直忙于学习,最后好歹还有点头绪,话不多说,MVC的学习是不能拉下的,就当前小白的我,认为MVC中的M并不是想象中的那样简单, ...
- 转:Image与byte之间互转
#region<Image 与 byte之间互转> /// <summary> /// 将一个byte转换成一个Bitmap对象 /// </summary> // ...
- 【JavaScript 6连载】四、apply和call的用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- AtCoder Beginner Contest 088 (ABC)
A - Infinite Coins 题目链接:https://abc088.contest.atcoder.jp/tasks/abc088_a Time limit : 2sec / Memory ...