HTTP的报文结构
请求报文由请求行、请求头(首部行,request header)、请求数据(实体主体,request data)三部分组成。
响应报文由状态行、响应头(首部行,response header)、响应体(实体主体,response data)三部分组成。
请求方法
方法 | 说明 |
---|---|
GET | 请求指定的页面信息,并返回实体主体 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件) |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 请求服务器删除指定的页面 |
HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
CONNECT | 用于代理服务器 |
OPTIONS | 允许客户端查看服务器的性能 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
get和post的区别
get | post |
---|---|
无状态变化的建议使用get请求 | 有数据写入、状态修改的建议使用post请求 |
传递的数据量有限制,一般不能大于2kb | 传递的数据量一般无限制 |
安全性低(请求数据暴露在地址栏中) | 安全性高(请求数据放在body里) |
GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据) | POST产生两个TCP数据包,浏览器先发送header,服务器响应100 ;浏览器再发送data,服务器响应200 (返回数据) |
状态码
五类状态码
状态码 | 说明 |
---|---|
1XX | 服务器正在处理请求 |
2XX | 客户端原因导致服务器无法处理请求 |
3XX | 需要进行额外操作以完成请求 |
4XX | 客户端原因导致服务器无法处理请求 |
5XX | 服务器原因导致处理请求出错 |
常见状态码
状态码 | 说明 |
---|---|
200 | OK 服务器成功处理了请求(这个是我们见到最多的) |
301/302 | 重定向,请求的URL已移走;Response中应该包含一个Location URL, 说明资源现在所处的位置 |
304 | 发送的附带条件请求未满足 |
400 | 请求报文语法错误或参数错误 |
403 | 请求资源被拒绝,输入了错误的用户名或密码 |
404 | (页面丢失)未找到资源 |
500 | 服务器故障或Web应用故障 |
503 | 服务器超负载或停机维护 |
cookie、session、token
名称 | 说明 |
---|---|
cookie | 浏览器第1次访问服务器时,服务器会生成key=value格式的身份标识数据,存储在set-cookie字段里,并发送给浏览器;浏览器看到有set-cookie字段,就把数据保存起来(cookie是保存在浏览器的) |
session | 服务器产生session,并把sessionId发送给浏览器,浏览器把sessionId保存在cookie中(session是保存在服务器的) |
token | token是在服务端将用户信息经过Base64Url编码过后传给在客户端,每次用户请求都会带上这一段信息,服务端拿到此信息进行解密 |