HTTP协议相关知识

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 HTTP协议相关知识,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

HTTP

HTTP概述

HTTP即超文本传输协议,是一个用于传输超媒体文档(如HTML)的应用层协议。它是为Web浏览与Web服务器之间的通信而设计的。HTTP遵循客户端 – 服务端模型,客户端打开一个连接发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,意味服务器不会在两个请求之间保留任何数据(状态)。

HTTP无状态

HTTP协议是无状态的。

请求与请求之间,是互不关心对方的情况的。上一秒发出A请求,下一秒发出B请求,B是完全感知不到A请求曾经的存在。总之,两个请求间毫无瓜葛。

若需要维持状态信息,可以使用cookiesession

cookie:

cookie是存储在浏览器的小段文本,会在浏览器每次向同一服务器再发起请求时被携带并发送到服务器上。可以把状态信息放在cookie里,带给服务器。

session:

session是存储在服务器的用户数据。浏览器第一次向服务器发起请求时,服务器会为当前会话创建一个session,并且把对应的session-id写入cookie中,用来标识session。此后,每次用户的请求都会携带一个包含了 session-id的cookie,服务器解析出session-id,便能定位到用户的用户信息。

TCP长/短连接

短连接:

建⽴连接--数据传输--关闭连接

建⽴连接--数据传输--关闭连接

建⽴连接--数据传输--关闭连接

长连接:

建⽴连接--数据传输--保持连接--数据传输--保持连接--数据传输--关闭连接

优点:

长连接可以省去较多的TCP建⽴和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户端来说,比较适⽤⻓连接。

缺点:

client与server之间的连接如果⼀直不关闭,会随着客户端连接越来越多,server端迟早会扛不住,这时server端要采取⼀些措施。如关闭⼀些⻓时间没有读写事件发生的连接,这样避免⼀些恶意连接导致server端服务受损。

请求方法类型

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS等。

类型 描述
GET 请求指定页面信息,用作数据的读取,请求参数以query的形式附加,返回实体主体。
HEAD 类似于GET请求,只请求页面的首部、不请求页面内容。它允许单纯获取服务器的响应头信息。
POST 向指定资源提交数据进行处理请求,即创建新资源或修改现有资源。请求参数以body的形式传递,即数据被包含在请求体中
PUT PUT的URI指向是具体的某个资源,而不能指向资源集合。同时PUT对资源的修改是幂等的。从客户端向服务器传送的数据取代指定的文档的内容
DELETE 请求服务器删除指定的资源。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
OPTIONS 用于获取指定服务能够支持的通信选项。
TRACE 回显服务器收到的请求,主要用于测试或诊断

请求格式

HTTP请求格式主要包括:请求行(request line)、请求头(header)、空行和请求数据

GET / HTTP/1.1
# GET表示请求方式 /表示请求的网页 HTTP/1.1表示当前HTTP的版本为1.1

HOST: 127.0.0.1:8080
# 服务器的IP地址和端口号

connection: keep-alive
# 表示连接方式为长连接

accept: text/html, application/xhtml+xml, application/xml; q=0.9,image/webp, */*;q=0.8
# 表示浏览器可接受的数据格式

user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
# 表示浏览器的版本

accept-Encoding: gzip, deflate, sdch
# 表示浏览器可接受的压缩格式

accept-Language: zh-CN, zh; q=0.8
# 表示浏览器可以接受的语言

cookie: uuid_tt_dd=10_19572343470-1658843455170-6410
# 表示浏览器在本地缓存中存储的数据

响应格式

HTTP响应格式主要包括:状态行、消息头、空行和响应正文

HTTP/1.1 200 OK
# HTTP/1.1表示当前HTTP的版本为1.1200 OK表示网络状态码

Cache-Control: private
# 缓存控制是公有的还是私有的

Connection: keep-alive
# 连接方式是长连接

Content-Encoding: gzip
# 发送数据的压缩格式采用gzip

Content-Type: text/html;charset=utf-8
# 发送数据的格式采用了text/html; 编码是utf-8

date: Thu, 20 Oct 2022 12:02:15 GMT
# 服务器当前的时间

Expires: Thu, 24 May 2022 12:02:15 GMT
# Expires存储的是一个用来控制缓存失效的日期

Set-Cookie: TOKEN=123456
# 设置Cookie,存在浏览器本地的一个缓存区域

Transfer-Encoding: chunked
# 表示将实体安全传递给用户所采用的编码形式。chunked代表使用分块传输编码

响应状态码

1xx

成功接收请求,但是处理过程还没结束,需要客户端再抛出一个请求才能完成整个过程。少见,了解即可。

2xx

表示成功接收请求、并且已经处理完毕。

200 OK:标识客户端的请求已经被服务器正确处理

3xx

表示服务器虽然处理了请求,但客户端还需要进一步的工作,才可以完成请求。

301:永久性重定向,表示资源已被分配了新的URL

302:临时性重定向,表示资源临时被分配了新的URL

304:表示服务器校验后发现资源没有改变,提醒客户端直接走缓存来取资源

4xx

客户端错误,意味着请求出错。

400:请求报文存在语法错误

403:对请求资源的访问被服务器拒绝,多半是没权限

404,资源不存在,可能是访问路径不对,也可能是这个资源在服务端被删除了

5xx

服务器错误,意味着服务器内部的程序处理有问题。

500:服务器在接受请求后进行处理的过程中,发生了内部错误

502:网关错误

504:网关超时

Heather

常规Heather

字段 含义
Cache-Control 控制缓存的行为
Connection 控制不再转发给代理的首部字段、管理持久连接
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知

请求头Heather

字段 含义
Accept 用户代理可处理的媒体类型
Accept-Charset 优先的字符集
Accept-Encoding 优先的内容编码
Accept-Language 优先的语言(自然语言)
Authorization Web认证信息花
Expect 期待服务器的特定行为
From 用户的电子邮箱地址
Host 请求资源所在服务器
If-Match 比较实体标记
If-Modified-Since 比较资源的更新时间
If-None-Match 比较实体标记,与If-Match相反
If-Range 资源未更新时发送实体 Byte的范围请求
If-Unmodified-Since 比较资源的更新时间
Max-Forwards 最大传输逐跳数
Proxy-Authorization 代理服务器要求客户端的认证信息
Range 实体的字节范围请求
RefererTE 传输编码的优先级
User-Agent HTTP客户端程序的信息

响应头Heather

字段 含义
Accept-Ranges 是否接受字节范围请求
Age 推算资源创建经过时间
ETag 资源的匹配信息
Location 令客户端重定向至指定URI
Proxy-Authenticate 代理服务器对客户端的认证信息
Retry-After 对再次发起请求的时机要求
ServerHTTP 服务器的安装信息
Vary 代理服务器缓存的管理信息
WWW-Authenticate 服务器对客户端的认证信息

实体Heather

请求消息和响应消息都可以包含实体信息

字段 含义
Allow 资源可支持的HTTP方法
Content-Encoding 实体主体适用的编码方式
Content-Language 实体主体的自然语言
Content-Length 实体主体的大小
Content-Location 替代对应资源的URI
Content-MD5 实体主体的报文摘要
Content-Range 实体主体的位置范围
Content-Type 实体主体的媒体类型
Expires 实体主体过期的日期时间
Last-Modified 资源的最后修改日期时间

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136863.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!