• HTTP协议简介


    通信

    信息的传递和交换

    通信三要素

    通信的主体、内容、方式

    通信协议

    指通信双方完成通信所必需遵守的规则和约定

    通俗来讲:就是通信双方采用约定好的格式来发送和接收信息,阻止事先约定好的通信格式叫做通信协议

    传输协议

    客户端与服务器之间要实现网页内容的传输,则通信的双方必须遵守网页内容的传输协议

    HTTP协议

    网页内容又叫做超文本,所以网页内容的传输协议又叫做超文本传输协议(HyperText Transfer Protocol)简称HTTP协议

    HTTP协议规定了客户端和服务器之间进行网页内容传输时所必须遵照的传输格式

    HTTP协议采用了请求/响应的交互模型(客户端请求,服务器响应)

    请求消息

    客户端发起的请求叫做HTTP请求,客户端发送到服务器的消息,叫做HTTP请求消息

    注:HTTP请求消息又叫做HTTP请求报文

    HTTP请求消息的组成部分:

    请求行(request line)

    由请求方式、URL和HTTP协议版本组成,他们之间用空格隔开

    请求头部(header)

    是用来描述客户端的基本信息,从而把客户端相关的信息告知服务器

    例如:

    User-Agent 用来说明当前是什么类型的浏览器

    Content-Type 用来描述发送到服务器的数据格式

    Accept 用来描述客户端能够接收到什么类型的返回内容

    Accept-Language 用来描述客户端期望接受那种人类语言的文本内容、

    更多的请求头字段的描述:HTTP Headers - HTTP | MDN

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

    空行

    最后一个请求头的后面是一个空行,通知服务器请求头部到此结束

    作用就是分隔请求头部与请求体

    请求体

    里面存放的就是要通过POST方式提交到服务器的数据

    注:只有POST请求才有请求体,GET请求没有

    响应消息

    是服务器响应给客户端的消息内容,也叫响应报文

    组成部分:

    状态行

    由HTTP协议版本、状态码、状态码的描述文本组成,他们之间用空格隔开

    响应头部

    用来描述服务器的基本信息。由多行键/值对组成,每行的键和值之间用英文的冒号分隔

    空行

    用来通知客户端响应头部到此结束,分隔响应头部和响应体

    响应体

    存放服务器响应给客户端的资源内容

    请求方法

    作用:表明要对服务器上的资源执行的操作。最常用的是GET和POST

    序号方法描述
    1GET(查询)发送请求来获取服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中
    2POST新增)向服务器提交资源(例如提交表单或上传文件)、数据被包含在请求体中提交给服务器
    3PUT修改)向服务器提交资源,并使用提交的新资源,替换掉服务器对应的旧资源
    4DELETE删除)请求服务器删除指定的资源
    5HEADHEAD方法请求是一个与GET请求的响应相同的响应,但没有响应体
    6OPTIONS获取htto服务器支持的http请求方法,允许客户端查看服务器的性能,比如Ajax跨域时的预检等
    7CONNECT建立一个到由目标资源标识的服务器的隧道
    8TRACE沿着到目标资源的路径执行一个消息环回测试,主要用于测试或诊断
    9PATCH是对PUT方法发补充,用来对已知资源进行局部更新

    HTTP响应状态码(HTTP Status Code)

    用来标识响应的状态

    由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字用来对状态码进行细分

    分类分类描述
    1**信息,服务器收到请求,需要请求者继续执行操作
    2**成功,操作被成功接收并处理
    3**重定向,需要进一步的操作以完成请求
    4**客户端错误,请求包含语法错误或无法完成请求
    5**服务器错误,服务器在处理请求的过程中发生了错误

    2**范围的状态码

    状态码状态码英文名称中文描述
    200OK请求成功,一般用于GET与POST请求
    201Created已创建,成功请求并创建了新的资源,通常用于POST或PUT请求

    3**范围的状态码

    状态码状态码英文名称中文描述
    301Moved permanently永久移动。请求的资源已被永久的移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用形的URL代替
    302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URL
    304Not Modified未修改。所请求的资源未修改。服务器返回此状态码时,不会返回任何资源(响应消息不包含响应体)。客户端通常会缓存访问过的资源

    4**范围的状态码

    状态码状态码英文名称中文描述
    400Bad Request1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求 2、请求参数有误
    401Unauthorized当前请求需要用户验证
    403Forbidden服务器已经理解请求,但是拒绝执行它
    404Not Found服务器无法根据客户端的请求找到资源(网页)
    408Request Timeout请求超时。服务器等待客户端发送的请求时间过长,超时

    5**范围的状态码

    状态码状态码英文名称中文描述
    500Internal Server Error服务器内部错误,无法完成请求
    501Not Implemented服务器不支持该请求方法,无法完成请求。只有GET和HEAD请求方法是要求每个服务器必须支持的,其他请求方法在不支持的服务器上会返回501
    503Service Unavailable由于超载或系统维护,服务器暂时的无法处理客户端的请求
  • 相关阅读:
    最大流与最小费用最大流简略版)
    【C++入门】字符串string类使用
    【深蓝学院】手写VIO第2章--IMU传感器--作业
    docker 部署 clickhouse
    关于node安装和nvm安装的问题
    修复 JavaScript 错误的四种方法
    ES系列、Elasticsearch Suggester API(自动补全)
    计算机毕业设计SSM“花点时间”在线图书超市【附源码数据库】
    Jenkins更新版本和插件导致maven工程job丢失(不显示)或部分功能丧失(svn,ssh)
    NIO流—理解Buffer、Channel概念和NIO的读写操作
  • 原文地址:https://blog.csdn.net/MoYuP_ENG/article/details/127120035