学习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协议,的更多相关文章

  1. 开始学习Django,配置静态登录页面

    开始学习Django,配置静态登录页面 准备阶段 众所周知,Django是一个重量级的设备齐全的web开发框架.在学习Django前我们需要具备如下的知识点: python基础编程 并发 网络编程 H ...

  2. [在学习Django框架之前所需要了解的知识点]

    [在学习Django框架之前所需要了解的知识点] Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现 ...

  3. 总结一下这几天学习django的心得

    总结一下这几天学习django的心得 http://www.tuicool.com/articles/jMVB3e 时间 2014-01-12 11:40:11  CSDN博客 原文  http:// ...

  4. 学习django就看这本书了!django book 2.0中文版

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/29/ 来源:python黑洞网 dj ...

  5. Python学习---django模板语法180122

    django模板语法[Template] 模版的组成:  HTML代码+逻辑控制代码  <h1> {{ user_name }} </h1> 逻辑控制代码的组成: 1.变量: ...

  6. Objective-C学习笔记 利用协议实现回调函数

    来源:http://mobile.51cto.com/iphone-278354.htm Objective-C学习笔记 利用协议实现回调函数是本文要介绍的内容,主要是实现一个显示文字为测试的视图,然 ...

  7. 第一章 Django之学习Django所需知识(3)

    所需编程知识 本书读者需要理解基本的面向过程和面向对象编程:流程控制(if, while 和 for),数据结构(列表,哈希表/字典),变量,类和对象. Web 开发经验,正如你所想的,也是非常有帮助 ...

  8. 小白学习django第一站-环境配置

    Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...

  9. 内网学习之Kerberos协议

    学习了解kerberos协议,有助于我们后期理解黄金票据和白银票据的原理 kerberos协议 kerberos是一种由麻省理工大学提出的一种网络身份验证协议.旨在通过使用密钥加密技术为客户端/服务器 ...

随机推荐

  1. windows 服务器硬盘的分区

    进入Server 2012的操作系统,打开CMD框,输入:diskmgmt.msc,回车. 操作完第一步后会弹出“磁盘管理”的框.鼠标右键点击红框所在位置,选中“压缩卷”. 在“输入压缩空间量(MB) ...

  2. 那种多空计算方法更正确呢?——从此图看应该是TEST005

    那种方法计算多空逆转更正确呢?——从此图1看应该是TEST005,但是实际上是ZCL_多空! TEST005具有滞后性!也就是说跌了一些在报警,可能已经跌了10%(如图2) ZCL_多空:当计算结果和 ...

  3. InstallShield2015制作安装包----------安装后实现自动运行

    安装向导完成后,自动运行. 实现的手段是:InstallScript脚本OnEnd()函数里面,调用可执行程序. 备注:INSTALLDIR预定义变量存放着程序的安装目录. //安装后运行dispat ...

  4. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  5. React-Native组件之Text内文字垂直居中方案

    style: { height: 100, textAlign: 'center', textAlignVertical: 'center', } 以上方法在Android上显示水平垂直居中, 但在I ...

  6. 互联网级监控系统必备-时序数据库之Influxdb技术

    时间序列数据库,简称时序数据库,Time Series Database,一个全新的领域,最大的特点就是每个条数据都带有Time列. 时序数据库到底能用到什么业务场景,答案是:监控系统. Baidu一 ...

  7. eclipse maven install没反应解决办法

    .打开eclipse的Window菜单-->java-->Installed JREs .点击用的jdk,edit,在Default VM arguments里面填入-Dmaven.mul ...

  8. XML系列之--创建电文格式的XML(一)

    关于XML,学校那会,老师在口中仅仅提及,自己也未曾深入接触过,仅是些将最基本XML文件内容显示在web定义的表格中之类的简单操作,如今项目中的收发电文涉及到复杂XML的操作.趁此契机好好回顾下XML ...

  9. Spark学习之路 (十四)SparkCore的调优之资源调优JVM的GC垃圾收集器

    一.概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟机栈.本 ...

  10. 【Hadoop学习之四】HDFS HA搭建(QJM)

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 由于NameNode对于整个HDF ...