JavaWeb基础学习笔记11——HTTP协议
目录
1、HTTP概念
HTTP(Hyper Text Transfer Protocol, 超文本传输协议)。
传输协议:定义了客户端和服务器端通信时,发送数据的格式。
特点:
- 基于TCP/IP的高级协议。
- 默认端口号:80。
- 基于请求/响应模型的:一次请求对应一次响应。
- 无状态的:每次请求之间相互独立,不能交互数据。
历史版本:
- 1.0:每一次请求响应都会建立新的连接。
- 1.1:复用连接。
HTTP协议:
- 请求消息:客户端发送给服务器端的数据。
请求消息数据格式: 1、请求行 2、请求头 3、请求空行 4、请求体
- 响应消息:服务器端发送给客户端的数据。
响应消息数据格式: 1、响应行 2、响应头 3、响应空行 4、响应体
2、请求消息数据格式
2.1、请求行
-请求行格式:
请求方式 请求url 请求协议/版本
Get /login.html HTTP/1.1
-请求方式,HTTP协议有7种请求方式,常用的有2种
GET:
1、请求参数在请求行中(在url后)。
2、请求的url长度有限制。
3、不太安全。
POST:
1、请求参数在请求体中。
2、请求的url长度没有限制。
3、相对安全。
2.2、请求头
请求头:客户端浏览器告诉服务器一些信息。
-请求头格式:
请求头名称:请求头值
常见的请求头:
User-Agent:浏览器告诉服务器,它访问服务器使用的浏览器版本信息。
可以在服务器端获取该头的信息,解决浏览器的兼容性问题。
Accept:可以接收和解析什么样的响应信息格式。
Accept-Language:可以接收的语言环境
Referer:告诉服务器,我(当前请求)从哪里来。
作用:① 防盗链; ② 统计工作。
Host: localhost
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Microsoft Edge";v="98"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
2.3、请求空行
空行,就是用于分割POST请求的请求头和请求体的。
-格式:空行
2.4、请求体(正文)
封装POST请求消息的请求参数的。
3、响应消息数据格式
响应字符串格式:
HTTP/1.1 200 OK
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 21 Feb 2022 12:42:27 GMT
Expires: Mon, 21 Feb 2022 12:42:27 GMT
Server: BWS/1.0
Vary: Accept-Encoding
Content-Length: 78
<!DOCTYPE html><!--STATUS OK-->
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-
8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta
content="always" name="referrer"><meta name="theme-color"
content="#ffffff"><meta name="description" content="全球领先的中文搜索引擎、致力于
让网民更便捷地获取信息,找到所求。百度超过千亿的中文网页数据库,可以瞬间找到相关的搜索结
果。"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link
rel="search" type="application/opensearchdescription+xml" href="/content-
search.xml" title="百度搜索" /><link rel="icon" sizes="any" mask
href="//www.baidu.com/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg"><link
rel="dns-prefetch" ...
3.1、响应行
1、响应行的组成:
协议/版本 响应状态码 状态码描述
HTTP/1.1 200 OK
2、响应状态码:服务器告诉客户端浏览器本次请求和响应的一个状态。
*状态码都是3位数字
*分类:
① 1xx:服务器接收客户端消息,但没有接收完成,等待一段时间后,发送1xx的状态码。
② 2xx:成功。
代表性的状态码:200。
③ 3xx:重定向。
代表性的状态码:302(重定向)。304(访问缓存)。
④ 4xx:客户端错误。
代表性的状态码:404(请求路径没有对应没有对应的资源)。
405(请求方式没有对应的doXxx()方法)
⑤ 5xx:服务器端错误。
代表性的状态码:500(服务器内部出现异常)。
3.2、响应头
1、响应头格式:
头名称 : 值
Cache-Control: private
Connection: keep-alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 21 Feb 2022 12:42:27 GMT
Expires: Mon, 21 Feb 2022 12:42:27 GMT
Server: BWS/1.0
Vary: Accept-Encoding
Content-Length: 78
2、常见的响应头
Content-Type:服务器告诉客户端本次响应体的数据格式以及编码格式。
Content-Length:响应体的字节个数。
Date:日期。
Content-disposition:服务器告诉客户端以什么格式打开响应体数据。
值:
in-line:默认值,在当前页面内打开。
attachment;filename=xxx:以附件形式打开响应体。文件下载
3.3、响应空行
3.4、响应体
1、响应体格式:
即真实传输的数据。