http 协议

 

来自:https://www.itheima.com/news/20230823/160605.html

HTTP请求消息的组成部分

1. 请求行

请求行由请求方式、URL 和 HTTP 协议版本 3 个部分组成,他们之间使用空格隔开。

1692776571435_请求行.png

2. 请求头部

请求头部用来描述客户端的基本信息,从而把客户端相关的信息告知服务器。比如:User-Agent 用来说明当前是什么类型的浏览器;Content-Type 用来描述发送到服务器的数据格式;Accept 用来描述客户端能够接收什么类型的返回内容;Accept-Language 用来描述客户端期望接收哪种人类语言的文本内容。

请求头部由多行 键/值对 组成,每行的键和值之间用英文的冒号分隔。

1692776662530_请求头部.png

 

3. 常见的请求头字段

请求头部常见的请求字段如下表:

1692777388825_常见的请求头字段.png

4. 空行

最后一个请求头字段的后面是一个空行,通知服务器请求头部至此结束。请求消息中的空行,用来分隔请求头部与请求体。

1692777468151_空行.png

5. 请求体

请求体中存放的,是要通过 POST 方式提交到服务器的数据。

1692777738791_请求体.png

 =============== ===============
来自:https://www.cnblogs.com/rickdiculous/p/14333116.html

 http协议报文

    1.请求报文(请求行/请求头/请求数据/空行)
        请求行
            求方法字段、URL字段和HTTP协议版本
            例如:GET /index.html HTTP/1.1
                get方法将数据拼接在url后面,传递参数受限
            请求方法:
                GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
        请求头(key value形式)
            User-Agent:产生请求的浏览器类型。
            Accept:客户端可识别的内容类型列表。
            Host:主机地址
        请求数据
            post方法中,会把数据以key value形式发送请求
        空行
            发送回车符和换行符,通知服务器以下不再有请求头
    2.响应报文(状态行、消息报头、响应正文)
        状态行
        消息报头
        响应正文
 
例如请求数据:
1 GET/sample.jspHTTP/1.1
2 Accept:image/gif.image/jpeg,*/*
3 Accept-Language:zh-cn
4 Connection:Keep-Alive
5 Host:localhost
6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
7 Accept-Encoding:gzip,deflate
8
9 username=jinqiao&password=1234
第一行为http请求行,包含方法,URI 和http版本
2-7为请求头,包含浏览器,主机,接受的编码方式和压缩方式
第8行表示一个空行 表示请求头结束 这个空行是必须的
第9行是数据体,比如是需要查询的信息。
http响应体由三部分组成:
http响应由三个部分组成分别是状态行,响应头,响应正文。
状态行是由:HTTP-Version+Status-Code+Reason-Phrase
比如:HTTP/1.1 200 ok
分别表示http版本 + 状态码 + 状态代码的文本描述
状态码:
 
1xx
指示信息–表示请求已接收,继续处理
2xx
成功–表示请求已被成功接收、理解、接受
3xx
重定向–要完成请求必须进行更进一步的操作。
4xx
客户端错误–请求有语法错误或请求无法实现。
5xx
服务器端错误–服务器未能实现合法的请求。
 
响应头:包含服务器类型,日期,长度,内容类型等
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
 响应正文响应正文就是服务器返回的HTML页面或者json数据
 
 
一个完整的Http请求过程:

 ===============

来自:https://www.runoob.com/http/http-messages.html

服务器响应消息

HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

  • 状态行(Status Line):

    • HTTP 版本:与请求消息中的版本相匹配。
    • 状态码:三位数,表示请求的处理结果,如 200 表示成功,404 表示未找到资源。
    • 状态信息:状态码的简短描述。

    状态行的格式示例:HTTP/1.1 200 OK

  • 响应头(Response Headers):

    • 包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。
    • 常见的响应头包括Content-TypeContent-LengthServerSet-Cookie等。
  • 空行

    • 响应头和响应体之间的分隔符,表示响应头的结束。
  • 响应体(可选):

    • 包含服务器返回的数据,如请求的网页内容、图片、JSON数据等。

 

实例

下面实例是一点典型的使用 GET 来传递数据的实例:

客户端请求:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Connection: keep-alive

服务端响应:

HTTP/1.1 200 OK
Date: Wed, 18 Apr 2024 12:00:00 GMT
Server: Apache/2.4.1 (Unix)
Last-Modified: Wed, 18 Apr 2024 11:00:00 GMT
Content-Length: 12345
Content-Type: text/html; charset=UTF-8

<!DOCTYPE html>
<html>
<head>
    <title>Example Page</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <!-- The rest of the HTML content -->
</body>
</html>

在实际应用中,HTTP 消息可以包含更多的头字段,并且请求体和响应体的大小会根据传输的数据而变化

===============================

 

参考:

https://www.cnblogs.com/rickdiculous/p/14333116.html

https://www.itheima.com/news/20230823/160605.html

posted @ 2024-06-18 20:55  redrobot  阅读(1)  评论(0编辑  收藏  举报