应用层协议HTTP

一.HTTP介绍

HTTP:HyperText Transfer Protocol, 超文本传输协议, 是一个至关重要的协议。 它定义了客户端(如浏览器) 与服务器之间如何通信, 以交换或传输超文本(如 HTML 文档) 
HTTP 协议是客户端与服务器之间通信的基础。 客户端通过 HTTP 协议向服务器发送请求, 服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、 无状态的协议, 即每次请求都需要建立新的连接, 且服务器不会保存客户端的状态信息

注意:超文本是指超出文本范围,也可以是图片、音频或者其他超出文本的内容
 



二.URL介绍

定义:统一资源定位符,例如:https://cn.bing.com/search?q=%E7%99%BE%E5%BA%A6&form=ANNTH1&refig=671cc87ed4f34b68a1aa1ef0108def1e&pc=HCTS&adppc=EDGEESS&pqlth=0&assgl=2&sgcn=%E7%99%BE%E5%BA%A6&qs=HS&smvpcn=0&swbcn=10&sc=10-0&sp=1&ghc=0&cvid=671cc87ed4f34b68a1aa1ef0108def1e&clckatsg=1&hsmssg=0

就是一个url,通常情况下一个url由以下几部分组成:

协议方案名:http或者https

登录信息:通常省略

服务器地址:cn.bing.com

服务器端口号:一般浏览器都是80,可以省略不写

带层次的文件路径

查询字符串

片段标识符

要注意的是:url对于特殊的字符是无法直接表示的,例如‘+’是通过%2B来表示,对于我们的中文也是通过utf8编码格式将其转换为16进制字符来表示,每个字在前面加上%

urlencode :是指url编码

urldecode:是指url解码



三.HTTP请求与响应

Request:

Reponse:

下面我们就对其中的细节进行详细讲解:

请求方法:

GET:用于请求 URL 指定的资源。
示例: GET /index.html HTTP/1.1

特性: 指定资源经服务器端解析后返回响应内容
 

POST : 用于传输实体的主体, 通常用于提交表单数据。
示例: POST /submit.cgi HTTP/1.1
特性: 可以发送大量的数据给服务器, 并且数据包含在请求体中

 

PUT : 用于传输文件, 将请求报文主体中的文件保存到请求 URL 指定的位置。
示例: PUT /example.html HTTP/1.1
特性: 不太常用, 但在某些情况下, 如 RESTful API 中, 用于更新资源。


 HEAD :与 GET 方法类似, 但不返回报文主体部分, 仅返回响应头。
示例: HEAD /index.html HTTP/1.1
特性: 用于确认 URL 的有效性及资源更新的日期时间等

 

DELETE :用于删除文件, 是 PUT 的相反方法。
示例: DELETE /example.html HTTP/1.1
特性: 按请求 URL 删除指定的资源


OPTIONS:用于查询针对请求 URL 指定的资源支持的方法。
示例: OPTIONS * HTTP/1.1
特性: 返回允许的方法, 如 GET、 POST 等

 

关于版本号:

请求报头中发的是client的版本号,例如HTTP/1.0,服务器需要回应对应的版本号,例如:

HTTP/1.0

关于不同的版本号介绍可以看下面这篇博客:(自认为其讲解的不错)

HTTP协议各个版本之间区别?_网络协议版本-CSDN博客

下面我们将要讲解状态码和其描述:

相信大家都知道404表示:NOT FOUNT,但是对于其他状态码大家知道多少呢?下面让我们来看个表格:

状态码 含义 应用样例
100 Continue 上传大文件时, 服务器告诉客户端可以
继续上传
200 OK 访问网站首页, 服务器返回网页内容
201 Created 发布新文章, 服务器返回文章创建成功
的信息
204 No Content 删除文章后, 服务器返回“无内容”表示操
作成功
301 Moved
Permanently
网站换域名后, 自动跳转到新域名; 搜
索引擎更新网站链接时使用
 
302 Found 或 See
Other
用户登录成功后, 重定向到用户首页
304 Not Modified 浏览器缓存机制, 对未修改的资源返回
304 状态码
400 Bad Request 填写表单时, 格式不正确导致提交失败
401 Unauthorized 访问需要登录的页面时, 未登录或认证
失败
403 Forbidden 尝试访问你没有权限查看的页面
404 Not Found 访问不存在的网页链接
500 Internal Server
Error
服务器崩溃或数据库错误导致页面无法
加载
502 Bad Gateway 使用代理服务器时, 代理服务器无法从
上游服务器获取有效响应
503 Service
Unavailable
服务器维护或过载, 暂时无法处理请求

总结:

1xx:Informational(信息性状态码) 接收的请求正在处理

2xx:Success(成功状态码)请求正常处理完毕

3xx:Redirection(重定向状态码)需要进行附加操作以完成请求

4xx:Client Error(客户端错误状态码)服务器无法处理请求

5xx:Server Error(服务器错误状态码)服务器处理请求出错

HTTP 状态码 301(永久重定向) 和 302(临时重定向) 都依赖 Location 选项。 以下
是关于两者依赖 Location 选项的详细说明
HTTP 状态码 301(永久重定向) :
当服务器返回 HTTP 301 状态码时, 表示请求的资源已经被永久移动到新的位置。在这种情况下, 服务器会在响应中添加一个 Location 头部, 用于指定资源的新位置。 这个 Location 头部包含了新的 URL 地址, 浏览器会自动重定向到该地址
HTTP 状态码 302(临时重定向) :
当服务器返回 HTTP 302 状态码时, 表示请求的资源临时被移动到新的位置。同样地, 服务器也会在响应中添加一个 Location 头部来指定资源的新位置。 浏览器会暂时使用新的 URL 进行后续的请求, 但不会缓存这个重定向
总结: 无论是 HTTP 301 还是 HTTP 302 重定向, 都需要依赖 Location 选项来指定资
源的新位置。 这个 Location 选项是一个标准的 HTTP 响应头部, 用于告诉浏览器应该
将请求重定向到哪个新的 URL 地址

 

下面让我们再来看看请求报头和响应报头:

Content-Type: 数据类型(text/html 等)
Content-Length: Body 的长度

Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
User-Agent: 声明用户的操作系统和浏览器版本信息;
referer: 当前页面是从哪个页面跳转过来的;
Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能(后面我们会写一篇博客重点讲解)

 

最后,感谢大家的支持!!!

猜你喜欢

转载自blog.csdn.net/2301_79813267/article/details/143257724