柚子快报邀请码778899分享:网络协议 HTTP协议详解

http://yzkb.51969.com/

HTTP协议:是W3C制定的一种超文本传输协议。(是一种通信协议:发送消息的模板提前被制定好。)就是服务器和浏览器互相发送消息的模板。

HTTP协议包括:

1、请求协议

浏览器 向 WEB服务器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

2、响应协议

WEB服务器 向 浏览器发送数据的时候,这个发送的数据需要遵循一套标准,这套标准中规定了发送的数据具体格式。

HTTP的请求协议

请求行

第一部分:请求的方式method(有7种)

get(常用的)

post(常用的)

delete

put

head

options(预检请求)

trace

第二部分:URI

什么是URI? 统一资源标识符。代表网络中某个资源的名字。但是通过URI是无法定位资源的。

什么是URL?统一资源定位符。代表网络中某个资源的位置,同时,通过URL是可以定位到该资的。

第三部分:HTTP协议的版本号

请求头

HTTP请求头包含了HTTP请求的元数据,用于告诉服务器如何处理请求和发送响应。下面是一些常见的HTTP请求头字段及其含义:

User-Agent:标识客户端浏览器、操作系统及版本号等信息。

Accept:表示客户端可以接受的数据类型。例如:"text/html"、"application/xml"等。

Accept-Encoding:表示客户端可以接受的数据压缩格式。例如:"gzip"、"deflate"、"br"等。

Accept-Language:表示客户端可以接受的语言类型。例如:"en-US"、"zh-CN"等。

Cache-Control:控制缓存的行为。例如:"no-cache"、"max-age=3600"等。

Connection:表示客户端与服务器之间连接的类型。例如:"keep-alive"、"close"等。

Host:表示请求的服务器的域名或IP地址和端口号。

Referer:表示请求来源的URL地址。

Cookie:表示客户端发送给服务器的Cookie信息。

Authorization:表示客户端发送的身份验证凭证信息。

Content-Length:表示请求体的长度。

Content-Type:表示请求体的类型。例如:"application/x-www-form-urlencoded"、"application/json"等。

Content-Type

HTTP请求头中的 Content-Type 字段用于指定请求体的媒体类型(media type),即请求体的数据格式。下面是一些常见的 Content-Type 值:

text/plain:纯文本,没有格式。

text/html:HTML 格式。

application/json:JSON 格式。

application/xml:XML 格式。

application/x-www-form-urlencoded:经过 URL 编码的表单数据。

multipart/form-data:用于上传文件、图片和二进制数据的表单格式。

image/png:PNG 图像格式。

image/jpeg:JPEG 图像格式。

audio/mpeg:MPEG 音频格式。

video/mp4:MPEG-4 视频格式。

空白行

用来区分"请求头"和"请求体"的

请求体

浏览器向服务器发送的具体数据.

HTTP请求协议的具体报文:GET请求

GET /Servlet05/get?username=lucy&userpwd=123 HTTP/1.1 请求行

Host: localhost:8080 请求头

Connection: keep-alive

sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: navigate

Sec-Fetch-User: ?1

Sec-Fetch-Dest: document

Referer: http://localhost:8080/Servlet05/index.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

Cookie: Idea-69292d60=aab66041-a5ec-4720-bd7d-906d53381ec2

空白行

请求体

HTTP请求协议的具体报文:POST请求

POST /Servlet05/post HTTP/1.1 请求行

Host: localhost:8080 请求头

Connection: keep-alive

Content-Length: 27

Cache-Control: max-age=0

sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

Upgrade-Insecure-Requests: 1

Origin: http://localhost:8080

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Sec-Fetch-Site: same-origin

Sec-Fetch-Mode: navigate

Sec-Fetch-User: ?1

Sec-Fetch-Dest: document

Referer: http://localhost:8080/Servlet05/index.html

Accept-Encoding: gzip, deflate, br

Accept-Language: zh-CN,zh;q=0.9

Cookie: Idea-69292d60=aab66041-a5ec-4720-bd7d-906d53381ec2

空白行

username=jack&userpwd=11111 请求体

HTTP的响应协议

状态行

由三部分组成:

第一部分:协议版本号(HTTP/1.1)

第二部分:状态码(HTTP协议中规定的响应状态号。不同的响应结果对应不同的号码。)

200 表示请求响应成功,正常结束。

404表示访问的资源不存在,通常是因为要么是你路径写错了,要么是路径写对了,但是服务器中对应的资源并没有启动成功。总之404错误是前端错误。

405表示前端发送的请求方式与后端请求的处理方式不一致时发生:

比如:前端是POST请求,后端的处理方式按照get方式进行处理时,发生405

比如:前端是GET请求,后端的处理方式按照post方式进行处理时,发生405

500表示服务器端的程序出现了异常。一般会认为是服务器端的错误导致的。

以4开始的,一般是浏览器端的错误导致的。

以5开始的,一般是服务器端的错误导致的。

第三部分:状态的描述信息

ok 表示正常成功结束。

not found 表示资源找不到。

响应头

Content-Type

响应的内容类型,告诉浏览器这个响应的内容类型,浏览器就知道怎么处理。

Content-Type:text/html;charset=UTF-8 

告诉客户端,资源文件的类型,还有字符编码,客户端就会通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

// 设置响应头,告诉浏览器这是一个字节流,浏览器处理字节流的默认方式就是下载 response.setContentType("application/octet-stream");

Content-Disposition

// Content-Disposition 是 HTTP 协议中的一个头部字段,用于指示文件的名称和下载方式。

// inline 表示文件应该在浏览器中直接显示,而不是下载。

//attachment 表示文件应该下载到本地。

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

- 响应的内容长度

- 响应的时间

- ....

空白行

区分"响应头"和"响应体"

响应体

响应体就是服务器响应给浏览器的正文,这些内容是一个长的字符串,这个字符串被浏览器解析渲染,解释并执行,最终展示出效果。

HTTP响应报文

HTTP/1.1 200 ok 状态行

Content-Type: text/html;charset=UTF-8 响应头

Content-Length: 160

Date: Thu, 24 Feb 2022 00:58:40 GMT

Keep-Alive: timeout=20

Connection: keep-alive

空白行

响应体

from get servlet

from get servlet

柚子快报邀请码778899分享:网络协议 HTTP协议详解

http://yzkb.51969.com/

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: