参考博客
一、HTTP请求报文
1. 起始行
2. 请求头 headers
2.1. 由3部分组成:
请求方法字段
URL字段
HTTP协议版本字段
它们用空格分隔。例如,GET /index.html HTTP/1.1。
2.2 HTTP协议的请求方法:
GET
POST
HEAD
PUT
DELETE
OPTIONS
TRACE
CONNECT
2.3 请求头部
请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。
请求头
说明
HOST
接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent
发送请求的应用程序名称
Connection
指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset
通知服务端可以发送的编码格式
Accept-Encoding
通知服务端可以发送的数据压缩格式
Accept-Language
通知服务端可以发送的语言
3. 空行
最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
4. 请求体 body
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。
与请求数据相关的最常使用的请求头是 Content-Type 和 Content-Length。
<request-line>
<headers>
<blank line>
[<request-body>
二、HTTP响应报文
1. 由3部分组成
状态行
响应头部
响应正文
2. 状态行
状态行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服务器HTTP协议的版本;
Status-Code表示服务器发回的响应状态代码;
Reason-Phrase表示状态代码的文本描述。
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
3. 响应头部
与请求头部类似,为响应报文添加了一些附加信息
常见响应头部如下:
响应头
说明
Server
服务器应用程序软件的名称和版本
Content-Type
响应正文的类型(是图片还是二进制字符串)
Content-Length
响应正文长度
Content-Charset
响应正文使用的编码
Content-Encoding
响应正文使用的数据压缩格式
Content-Language
响应正文使用的语言
4. HTTP响应报文例子
HTTP/1.1 200 OK
Date: Sat, 31 Dec 2005 23:59:59 GMT
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 122
<html>
<head>
<title>Wrox Homepage</title>
</head>
<body>
<!-- body goes here -->
</body>
</html>
三、web框架
1. web框架主要功能
实现路由
视图函数
2. Django服务器
接收从前端发送过来的请求
解析HTTP报文
进行路由分发
根据用户的URL执行对应的视图函数
将视图函数的返回值打包成HTTP响应报文
借助刚才简历的tcp连接将相应回传
Django通过服务器uwsgi接收请求、数据、解析,然后交给框架,
框架WSGI将请求数据交给Django框架,
Django框架根据解析的数据,进行路由分发,找视图函数
3. 哪些可以当做前端?
浏览器
手机APP
爬虫
程序urllib、urllib2
ajax