学习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是一种由麻省理工大学提出的一种网络身份验证协议.旨在通过使用密钥加密技术为客户端/服务器 ...
随机推荐
- eclipse 把鼠标指针放在错误的语句上 提示快速修正 不见了的解决方法
Window->Preferences->Java->Editor->Hovers 将[Combined Hover]选择即可,如果第一个[Variable Values]已经 ...
- VS基本学习之(变量与常量)
一.变量与常量 1) 变量 由(定义+赋值+取值组成) 变量的命名规则: ① 变量名组成:字母 数字 下划线 @ 汉字 ② 首字母只能用:字母 下划线 @ 汉字(不能是数字 ...
- EF切EFCore2.0存储过程问题
在从EF切换成EFCore2.0的过程中,遇到了存储过程的实现问题. 在EF中调用存储过程,非常方便,能够直接将结果转换成对应的结果类. 如代码中的Database.SqlQuery<TElem ...
- arm trustzone
arm的trustzone并不涉及到具体的crypto算法,只是实现: 1) 敏感信息的安全存储: 2) 控制bus和debug的安全访问,保证信息不被泄露: trustzone是system_lev ...
- 准备dbcp2-2.1.1和pool2-2.4.2 、commons-dbcp-1.4jar包
下载地址:https://pan.baidu.com/s/1gtcW36Lz6Yt-j9WlTu31Pw
- [博客迁移]探索Windows Azure 监控和自动伸缩系列2 - 获取虚拟机的监控定义和监控数据
上一篇博文介绍了如何连接Windows Azure: http://www.cnblogs.com/teld/p/5113063.html 本篇我们继续上次的示例代码,获取虚拟机的监控定义和监控数据. ...
- uva 10163 Storage Keepers
题意: 有n个仓库,m个人,一个仓库只能由一个人托管,每个人可以托管多个仓库. 每个人有一个能力值a,如果说他托管了k个仓库,那么这些仓库的安全值都是a/k. 雇佣一个人的花费也是a. 如果一个仓库没 ...
- 20165305 学习基础和C语言基础调查
学习基础和C语言基础调查 <优秀的教学方法---做教练与做中学>心得 在<优秀的教学方法---做教练与做中学>文章中又一次提到了"做教练"这一学习方法,因为 ...
- 20165316 预备作业3 Linux安装及学习
Linux安装 我下载的是VirtualBox 5.2.6和Ubuntu 17.10.1,感觉这两个版本的兼容性不是太好,因为我在Oracle的官网社区中看到不少新版本的问题没有得到解决,而老版本(V ...
- gitlab提交内容关联到slack通知
gitlab提交内容关联到slack通知 https://docs.gitlab.com/ee/user/project/integrations/slack.html 首先去slack做相关的设置 ...