Django框架
1、web应用 运行在浏览器上的应用 2、c/s b/s 架构 client/server:客户端服务器架构,C++ brower/server:浏览器服务器架构,Java、Python 底层均是基于socket 3、Python Web框架 a.socket b.页面路由 c.模板渲染 Django a用的wsgiref b自己写的 c自己写的 功能全面 Flask a用的第三方 b自己写的 c自己写的 小而轻 Tornado a自己写的 b自己写的 c自己写的 支持高并发
HTTP协议
什么是http协议:
HTTP(HyperText Transport Protocol)是超文本传输协议
基于TCP/IP协议基础上的应用层协议,底层实现仍为socket
基于请求-响应模式:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应
无状态:协议不对任何一次通信状态和任何数据做保存
无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接
http工作原理(事物)
一次http操作称之为一个事务,工作过程可分为四步:
1.客户端与服务端建立连接
2.客户端发生一个http协议指定格式的请求
3.服务器端接收请求后,响应一个http协议指定格式的响应
4.客户端将服务器的响应显示展现给用户
请求报文
# 请求行 请求头 请求体 ''' POST / HTTP/1.1 Host: 127.0.0.1:8001 Connection: keep-alive Upgrade-Insecure-Requests: 1 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 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 usr=abc&pwd=123 '''
响应报文
# 响应行 响应头 响应体 ''' HTTP/1.1 200 OK Content-type:text/html Login Success '''
状态码
# 1打头:消息通知 # 2打头:请求成功 # 3打头:重定向 # 4打头:客户端错误 # 5打头:服务器端错误
HTTP状态码及其含义
通过状态码告诉客户端服务器的执行状态,以判断下一步该执行什么操作。 常见的状态机器码有:
100-199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。 200-299:表示服务器成功接收请求并已完成处理过程,常用200(OK请求成功)。
300-399:为完成请求,客户需要进一步细化请求。302(所有请求页面已经临时转移到新的url)。 304、307(使用缓存资源)。 400-499:客户端请求有错误,常用404(服务器无法找到被请求页面),403(服务器拒绝访问, 权限不够)。 500-599:服务器端出现错误,常用500(请求未完成,服务器遇到不可预知的情况)。
HTTP和HTTPS的区别
HTTP协议传输的数据都是未加密的,也就是明文的,安全性低 对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。 简单来说,HTTPS协议是由SSL+HTTP协 议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。 HTTPS和HTTP的区别主要如下: 1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 4、http的连接很简单,是无状态的; HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、 身份认证的网络协议,比http协议安全。
HTTP 常见的请求头
1. Host (主机和端口号) 2. Connection (链接类型) 3. Upgrade-Insecure-Requests (升级为 HTTPS 请求) 4. User-Agent (浏览器名称) 5. Accept (传输文件类型) 6. Referer (页面跳转处) 7. Accept-Encoding(文件编解码格式) 8. Cookie (Cookie) 9. x-requested-with :XMLHttpRequest (是 Ajax 异步请求)