HTTP协议:应用层协议,是一个文本格式的协议
HTTP的请求方法):
首行:方法+url+HTTP的版本号
Header:请求的属性,冒号分割的键值对,每个属性之间使用\n分隔,遇到空行表示Header部分结束(注意:这个Accept-Language:本质上是一行,只是这个文本自动进行换行了)
空行:空的一行,报头header的结束标志
body正文:此处的请求方法是get,一般没有正文
HTTP的请求(POST方法):
在POST方法中一般都有正文
POST方法和GET方法的区别:
在本质上没有区别。
①GET是从服务器中获取某个数据。POST是往服务器中提交某个数据
②GET的body里面一般没有内容,POST的body里面一般都有内容
③GET方法一般是幂等的,POST方法一般不是幂等的
(幂等:如果多次请求的结果都是一样的,则称为幂等的)
④GET可以被缓存,POST不能被缓存
URL的格式:
例子:
https://mp.youkuaiyun.com/mp_blog/creation/editor?spm=1001.2014.3001.4503
https:协议方案名
登录信息:此处省略的登录信息
mp.youkuaiyun.com:服务器的地址,此处是一个域名。
端口号:此处省略了端口号,浏览器根据协议类型自动选择使用哪个端口
mp_blog/creation/editor:在层次的文件路径
spm=1001.2014.3001.4503:查询字符串(query string),本质上是一个键值对之间使用&分隔,键和值之间用=分隔。
片段标识符:此处省略了,主要用于页面内跳转
Header:报头。键值对结构
Host:表示服务器主机的地址和端口号,描述了访问目标
Content-Length:表示body中的数据长度
Content-Type:表示body中的数据格式
(在没有body的GET方法中,没有Content-Length和Content-Type属性)
User-Agent(UA):表示浏览器和操作系统的属性
Referer:表示当前这个页面从哪个页面跳转过来的
如果是直接在地址栏输入则没有这个属性
Cookie:是浏览器在本地存储用户自定义数据的一种关键机制
HTTP响应:
首行:HTTP协议的版本号+状体码+状态码解释
Header:请求的属性,冒号分割的键值对,每个属性之间使用\n分隔,遇到空行表示Header部分结束
空行:空的一行,报头header的结束标志
body:此时为服务器返回了一个html页面,则html页面里的内容就是body中的内容
状态码:表示访问一个页面的结果
常见的状态码:
①200 OK 表示访问成功
②404 Not Found 表示没有找到资源
③403 Forbidden 表示没有访问权限
④405 Method Not Allowed 表示客户端请求中的方法被禁止
⑤ 500 Internal Server Error 表示服务器内部出现问题
⑥504 Gateway Timeout 表示请求超时
⑦302 Move temporarily 表示临时重定向
⑧301 Moved Permanently 表示永久重定向
重定向:访问旧的地址被引导到新的地址
状态码总结:
类型 | 解释 | |
1×× | Informational(信息状态码) | 接收的请求正在被处理 |
2×× | Success(成功状态码) | 请求正常处理完毕 |
3×× | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4×× | Client Error(客户端错误状态码) | 服务器无法完成请求 |
5×× | Server Error(服务器错误状态码) | 服务器无法完成请求 |