HTTP传输协议
目录
- 1.简介
- 2.请求数据格式
- 3.响应数据格式
1.简介
HTTP(Hyper Text Transfer Protocol): 超文本传输协议,规定浏览器与服务器之间数据传输(请求、响应)的规则。
查看浏览器与服务器之间的数据请求与响应:
打开任一浏览器→F12→网络→F5刷新页面
随便点一个查看详情
请求发送的数据格式(比较固定)如下
HTTP协议特点:
- 基于TCP/IP的高级协议 ,面向连接,安全
三次握手,四次挥手 - 默认端口号:80
- 基于请求/响应模型的:一次请求对应一次响应
无状态的协议:每次请求之间相互独立,不能交互数据(对于事务处理没有记忆能力)
缺点:多次请求间不能共享数据,Java采用会话技术(Cookie、Session)来解决此问题
优点:速度快
历史版本:
- 1.0:短连接,每一次请求响应都会建立新的连接,请求一完就断开连接。
- 1.1:长连接,多个http 请求可以可以复用一个TCP连接
- 1.2:多路复用,允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。
HTTP协议1.0/1.1/2.0之间的区别
2.请求数据格式
HTTP请求数据分为3部分:
请求行:请求数据的第一行
请求方式 请求url 请求协议/版本
GET——请求方式
/——请求资源路径(url)
HTTP/1.1——协议版本请求方式: HTTP协议有7中请求方式,常用的有2种
GET:请求参数在请求行中,在url后; 请求的url长度有限制的;不太安全
POST: 请求参数在请求体中;请求的url长度没有限制的;相对安全请求头:客户端浏览器告诉服务器一些信息
key: value格式常见的请求头:
HOST:请求的主机名
Use-Agent:浏览器版本
Accept:浏览器能接收的资源类型
Accept-Language:浏览器偏好的语言,服务器可以根据此返回不同语言的网页
Accept-Encoding:浏览器可以支持的压缩类型
Referer:告诉服务器,我(当前请求)从哪里来- 请求空行:是用于分割POST请求的请求头,和请求体的
- 请求体:POST请求的最后一部分,存放请求参数
3.响应数据格式
- 响应行:响应数据的第一行。
HTTP/1.1——协议版本
200——响应状态码
OK——状态码描述 响应头:第二行开始
key:value格式常见的响应头:
Content-Type:该响应内容的类型
Content-Length:该响应内容的长度
Content-Encoding:该响应的压缩算法
Cache-Control:指示客户端应如何缓存- 响应体:最后一部分,存放响应数据
响应状态码分类:
分类 | 说明 |
---|---|
1xx | 响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求,如果它已经完成则忽略它 |
2xx | 成功——表示请求已经被成功接收,处理已经完成 |
3xx | 重定向——重定向到其他地方:让客户端再发起一个请求以完成整个处理 |
4xx | 客户端错误——处理发生错误,责任在客户端 |
5xx | 服务器端错误——处理发生错误,责任在服务器端 |
响应状态码大全
常见响应状态码:
状态码 | 英文描述 | 说明 |
---|---|---|
200 | OK | 客户端请求成功 |
302 | Found | 重定向状态响应代码指示所请求的资源已暂时移动到由Location标题给定的 URL 。浏览器重定向到这个页面 |
304 | Not Modified | 告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用本地缓存。隐式重定向 |
400 | Bad Request | 客户端请求有语法错误,服务器无法理解请求 |
403 | Forbidden | 服务端收到请求,但是拒绝提供服务,如:没有访问权限 |
404 | Not Found | 请求资源不存在,可能是:url输入有误,或者网站资源被删除 |
405 | Method Not Allowed | 请求方法有误,如改用GET,却用成了POST |
428 | Precondition Required | 服务器要求有条件的请求,告诉客户端想要访问此资源,必须携带特定的请求头 |
429 | Too Many Requests | 请求过多,可以限制客户端请求某个资源的数量,配合Retry-After(多长时间后可以请求)一起使用 |
431 | Request Header Fields Too Large | 请求头太大,服务器不愿意处理请求,因为其请求头字段太多。可以减少请求头的大小后重新提交 |
500 | Internal Server Error | 服务器发生不可预期的错误,查看日志确认错误 |
503 | Service Unavailable | 服务器尚未准备好处理请求,服务器初始化还没好 |
511 | Network Authentication Required | 客户端需要进行身份验证才能获得网络访问权限 |
还没有评论,来说两句吧...