狂神Java Web (三)HTTP详解
HTTP协议
1. 什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,通常运行在TCP之上。
- 文本:HTML,字符串,
- 超文本:图片、音乐、视频、定位、地图
- 默认端口:80 (HTTPS:443)
2. 两个时代
- HTTP 1.0
- HTTP/1.0
- 客户端可以与web服务端连接后,只能获得一个web资源,断开连接
- HTTP 2.0
- HTTP/1.1
- 客户端与服务器端连接后,可以获得多个web资源
3. HTTP请求
- 客户端 - 发请求(Request) - 服务器
百度:
Request URL: https://www.baidu.com/index.html # 请求地址
Request Method: GET # get/post方法
Status Code: 200 OK # 状态码 200
Remote Address: 36.152.44.96:443 # 远程地址
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
请求行:
- 请求行中的请求方式:GET
- 请求方式:Get / Post / HEAD / DELETE / PUT ...
- get:一次请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容。不安全,但高效。
- post:请求能够携带的参数没有限制,大小无限制,不会在浏览器URL中显示,安全,不够高效。
消息头:
- Accept: 告诉浏览器支持的数据类型
- Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 ISO-8859-1
- Accept-Language: 告诉浏览器的语言环境
- Cache-Control: 缓存控制
- Connection: 告诉浏览器,请求完之后断开还是保持连接
- HOST: 主机
4. HTTP响应
- 服务器 - 响应 - 客户端
百度:
Cache-Control: private # 缓存控制
Connection: keep-alive # 保持连接
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
响应体:
- Accept: 告诉浏览器支持的数据类型
- Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 ISO-8859-1
- Accept-Language: 告诉浏览器的语言环境
- Cache-Control: 缓存控制
- Connection: 告诉浏览器,请求完之后断开还是保持连接
- HOST: 主机
- Refresh: 告诉客户端,多久刷新一次
- Location: 让网页重新定位
响应状态码:
- 200 :请求响应成功
- 3xx :请求重定向
- 4xx :找不到资源 (资源不存在) 404
- 5xx :服务器代码错误 500 , 502(网关错误)
浙公网安备 33010602011771号