参考博客
一、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
网友评论