HTTP
HTTP
Hyper Text Transfer Protocol 超文本传输协议,定义了客户端和服务器通信时发送数据的格式
特点
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型的:一次请求对应一次响应
- 灵活:HTTP允许传输任意类型的数据,正在传输的数据类型由Content-Type加以标记。
- 无状态的:每次请求之间相互独立,如果后续处理需要前面的信息只能重传
历史版本:
- 1.0:每一次请求响应都会建立新的连接
- 1.1:复用连接
请求消息数据格式
GET /login.html HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost:8080/demo1?username=zhangsan
Upgrade-Insecure-Requests: 1
If-Modified-Since: Sat, 24 Jul 2021 09:45:21 GMT
If-None-Match: W/"280-1627119921927"
-
请求行(第1行):请求方式 资源路径 http版本
GET /login.html HTTP/1.1
http协议有7中请求方式,常用的有2种- GET:
- 请求参数在请求行中,在url后。
http://www.itcast.cn/javaForum?name=lee&psd=hnxy
- 传送的数据量有限,最多2KB。
- 请求参数在请求行中,在url后。
- POST:
- 请求参数在请求体中,传递数据的大小没有限制
- 更加安全
- GET:
-
请求头:包含客户端的信息
内容 说明 Accept 告知服务器,客户浏览器所支持的MIME类型。 Accept-Encoding 告知服务器,客户浏览器所支持的压缩编码格式。最常用的就是gzip压缩。 Accept-Language 告知服务器,客户浏览器所支持的语言。一般都是zh_CN或en_US等。 Referer 告知服务器,当前请求的来源。
只有当前请求有来源的时候,才有这个消息头。从地址栏输入的没有来源。
作用:1 统计广告点击次数 2 防盗链Content-Type 告知服务器,请求正文的MIME类型。 Content-Length 告知服务器,请求正文的长度。 User-Agent 浏览器相关信息 Connection: Keep-Alive 连接的状态:保持连接 If-Modified-Since 告知服务器,客户浏览器缓存文件的最后修改时间。 Cookie(********) 会话管理相关,非常的重要。 -
空行:分割请求头和请求体
-
请求体(正文):封装POST请求参数的,GET方式没有。
响应消息数据格式
响应消息:服务器发送给客户端的消息
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Content-Length: 101
Date: Wed, 06 Jun 2018 07:08:42 GMT
<html>
<head>
<title>$Title$</title>
</head>
<body>
hello , response
</body>
</html>
-
响应行
-
组成:协议/版本 状态码 状态码描述
HTTP/1.1 200 OK
-
状态码:
状态码 说明 200 一切都OK> 302/307 请求重定向(客户端行为,两次请求,地址栏发生改变) 304 请求资源未发生变化,使用缓存 404 请求资源未找到 500 服务器错误
-
-
响应头
-
格式:头名称: 值
-
常见的响应头:
消息头 说明 Location 请求重定向的地址,常与302,307配合使用。 Server 服务器相关信息。 Content-Type 告知客户浏览器,响应正文的MIME类型。 Content-Length 告知客户浏览器,响应正文的长度。 Content-Encoding 告知客户浏览器,响应正文使用的压缩编码格式。常用的gzip压缩。 Content-Language 告知客户浏览器,响应正文的语言。zh_CN或en_US等等。 Content-Disposition 告知客户浏览器,以下载的方式打开响应正文。 Refresh 定时刷新 Refresh:3;url=http://www.itcast.cn
Last-Modified 服务器资源的最后修改时间。 Set-Cookie(*******) 会话管理相关,非常的重要 Expires:-1 服务器资源到客户浏览器后的缓存时间 Catch-Control: no-catch 不要缓存,//针对http协议1.1版本 Pragma:no-catch 不要缓存,//针对http协议1.0版本
-
-
空行
-
响应体:传输的数据,可以是html文档。