HTTP协议的请求协议和响应协议的组成,HTTP常见的状态信息

HTTP协议

什么是协议

协议实际上是某些人或组织提前制定好的一套规范,大家只要都按照这个规范来就可以做到沟通无障碍

HTTP协议是W3C(万维网联盟组织)制定的一种超文本传输通信协议(发送消息的模板和数据的格式),除了传送字符串,还有声音、视频、图片等流媒体等超文本信息

Http协议游走在浏览器和服务器之间,浏览器和服务器在请求 (request) 或响应 (response) 数据的期间都要遵循HTTP协议,这样二者才能解耦合即不互相依赖

HTTP的请求协议及组成

使用浏览器,右击-->检查或直接按F12,找到network网络面板,通过这个面板查看浏览器发起的请求,ALL表示所有请求,XHR表示Ajax请求

在这里插入图片描述

HTTP请求协议GET请求的请求报文

GET /servlet05/getServlet?username=lucy&userpwd=1111 HTTP/1.1                           #请求行
Host: localhost:8080                                                                    #请求头
Connection: keep-alive
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
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/95.0.4638.54 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
                                                                                        #空白行
                                                                                        #请求体(在Query String parameters里面)

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

POST /servlet05/postServlet HTTP/1.1                                                  #请求行
Host: localhost:8080                                                                  #请求头
Connection: keep-alive
Content-Length: 25
Cache-Control: max-age=0
sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
Origin: http://localhost:8080
# 请求参数的内容类型,application/x-www-form-urlencoded表示表单传参
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/95.0.4638.54 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
                                                                                      #空白行
username=lisi&userpwd=123                                          					  #请求体(在Form Date选项里面)

请求行如POST /servlet05/postServlet HTTP/1.1包括请求方式,URI,HTTP协议版本号三部分

组成描述
请求方式GET, POST, DELETE , PUT , HEAD , OPTIONS , TRACE
URIURI是统一资源标识符,代表网络中某个资源的名字,通过URI是无法定位资源的
URL是统一资源定位符,代表网络中某个具体的资源,通过URL是可以定位到资源,如http://localhost:8080/servlet05/index.html
HTTP协议版本号描述当前HTTP协议的版本

请求头包含很多属性,如请求的主机和端口(Host) ,浏览器信息,cookie等信息

空白行: 空白行是用来区分请求头请求体

浏览器向服务器发送的具体数据,可以是键值对格式或者JSON格式的数据**

请求体: 浏览器发送到服务器的请求参数有name=value&...(键值对){"key":value,...}(json对象)两种格式

  • URL请求会将请求参数以键值对的格式拼接到请求地址后面,form表单的GET和POST请求会将请求参数以键值对的格式存储到请求报文的请求体中
  • 发起Ajax请求时,可以将请求参数以Json的格式存储到请求报文的请求体中

HTTP响应协议及组成

HTTP响应协议的具体报文

在这里插入图片描述

HTTP/1.1 200	ok(状态的描述信息)	 			       状态行
Server: nginx
Date: Mon, 09 Oct 2023 00:37:57 GMT
#Content-Type: application/json						响应头
Content-Type: text/html;charset=UTF-8    
Transfer-Encoding: chunked
Keep-Alive: timeout=20
Connection: keep-alive
Set-Cookie: JSESSIONID=6E8E893C9662C7A90DDF97FF61856F99; Path=/; HttpOnly

													空白行

<!doctype html>                                     响应体(在Response选项里面)
<html>
    <head>
        <title>from get servlet</title>
    </head>
    <body>
        <h1>from get servlet</h1>
    </body>
</html>

状态行如HTTP/1.1 200 ok由协议版本号,状态码,状态的描述信息三部分组成

  • 状态码: 不同的响应结果对应不同的响应状态码,以4开始的一般是浏览器端的错误导致的 , 以5开始的一般是服务器端的错误导致的
  • 状态描述信息: ok 表示正常成功结束,not found表示资源找不到

响应头包含很多属性,如响应体的内容类型,响应体的内容长度,响应的时间…

空白行: 用来分隔响应头和响应体的

响应体: 响应体就是服务器响应到浏览器的具体数据,响应内容可以是JSON格式或HTMl等字符串,这些字符串被浏览器渲染解释并执行,最终展示出效果

HTTP状态信息

1xx: 信息

消息:描述:
100 Continue服务器仅接收到部分请求,但是一旦服务器并没有拒绝该请求,客户端应该继续发送其余的请求
101 Switching Protocols服务器转换协议:服务器将遵从客户的请求转换到另外一种协议

2xx: 成功

消息:描述:
200 OK请求响应成功正常结束,其后是对GET和POST请求的应答文档
201 Created请求被创建完成,同时新的资源被创建
202 Accepted供处理的请求已被接受,但是处理未完成
203 Non-authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝
204 No Content没有新文档,浏览器应该继续显示原来的文档,如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的
205 Reset Content没有新文档,但浏览器应该重置它所显示的内容,用来强制浏览器清除表单输入内容
206 Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它

3xx: 重定向

消息:描述:
300 Multiple Choices多重选择,链接列表,用户可以选择某链接到达目的地,最多允许五个地址
301 Moved Permanently所请求的页面已经转移至新的url
302 Found所请求的页面已经临时转移至新的url
303 See Other所请求的页面可在别的url下被找到
304 Not Modified未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用
305 Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取
306 Unused此代码被用于前一版本。目前已不再使用,但是代码依然被保留
307 Temporary Redirect被请求的页面已经临时移至新的url

4xx: 客户端错误

消息:描述:
400 Bad Request服务器未能理解请求
401 Unauthorized被请求的页面需要用户名和密码
402 Payment Required此代码尚无法使用
403 Forbidden对被请求页面的访问被禁止
404 Not Found表示访问的资源不存在,服务器无法找到被请求的页面
通常是因为路径写错了或服务器中对应的资源并没有启动成功
405 Method Not Allowed请求中指定的方法不被允许,前端发送的请求方式与后端请求的处理方式不一致时发生的错误
406 Not Acceptable服务器生成的响应无法被客户端所接受
407 Proxy Authentication Required用户必须首先使用代理服务器进行验证,这样请求才会被处理
408 Request Timeout请求超出了服务器的等待时间
409 Conflict由于冲突,请求无法被完成
410 Gone被请求的页面不可用
411 Length Required“Content-Length” 未被定义。如果无此内容,服务器不会接受请求
412 Precondition Failed请求中的前提条件被服务器评估为失败
413 Request Entity Too Large由于所请求的实体的太大,服务器不会接受请求
414 Request-url Too Long由于url太长,服务器不会接受请求。当post请求被转换为带有很长的查询信息的get请求时,就会发生这种情况
415 Unsupported Media Type由于媒介类型不被支持,服务器不会接受请求
416服务器不能满足客户在请求中指定的Range头
417 Expectation Failed

5xx: 服务器错误

消息:描述:
500 Internal Server Error请求未完成,服务器端的程序出现了异常,一般会认为是服务器端的错误导致的
501 Not Implemented请求未完成,服务器不支持所请求的功能
502 Bad Gateway请求未完成,服务器从上游服务器收到一个无效的响应
503 Service Unavailable请求未完成,服务器临时过载或当机
504 Gateway Timeout网关超时
505 HTTP Version Not Supported服务器不支持请求中指明的HTTP协议版本
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值