• HTTP协议简介


    HTTP

    HTTP协议简介

    什么是通信

    通信就是信息的传递和交互

    通信三要素: 通信的主体,通信的内容,通信的方式

    现实生活中的通信

    张三要把自己考上北京大学的好消息写信告诉自己的好朋友李四

    通信的主体(张三和李四),通信的内容(考上北京大学),通信的方式(写信)

    互联网中中的通信

    服务器北京大学的介绍通过响应的方式发送给客户端

    通信的主体(服务器和客户端),通信的内容(北京大学的介绍),通信的方式(响应)

    通信协议

    通信协议是指通信的双方完成通信所必须遵守规则和约定

    通信双方采用预定好的格式来发送和接收信息,这种事先约定好的通信格式,就叫做通信协议

    现实生活中的通信协议

    写信双方必须遵守的规定的规则,信封的填写规则就是一种通信协议

    互联网中中的通信协议

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

    网页内容又叫做超文本,网页内容的传输协议又叫做超文本传输协议 简称HTTP协议

    什么是HTTP协议

    HTTP协议就是超文本传输协议,规定了客户端和服务端之间进行网页内容的传输时,所必须遵守的传输格式

    客户端要以HTTP协议要求的格式把数据提交服务器

    服务器要以HTTP协议要求的格式把内容响应客户端

    HTTP协议交互的模型>

    HTTP协议采用了请求/响应的交互模型

    在这里插入图片描述

    HTTP请求消息

    由于HTTP协议属于客户端浏览器和服务器之间的通信协议,所以,客户端发起的请求叫做http请求客户端发送到服务器的消息,叫做http请求消息

    http请求消息又叫做http请求报文

    HTTP请求消息组成 部分

    HTTP请求消息 由 请求行 ,请求头部,空行和请求体 4个部分组成

    在这里插入图片描述

    请求行

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

    在这里插入图片描述

    请求头部

    请求头部用来描述客户端的基本信息,把客户端相关的信息告知服务器

    User-Agent:当前是什么类型的浏览器

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

    Accept-Language :客户端期望接收那种人类语言的文本内容

    Host: 请求的服务器名字
    Connection:客户端和服务端之间的连接方式

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

    空行

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

    请求消息中的空行,用来分隔请求头和请求体

    请求体

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

    只有post请求才有请求体,GET请求没有请求体

    在这里插入图片描述

    HTTP响应消息

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

    HTTP响应消息组成部分

    HTTP响应消息由状态行,响应头部,空行,响应体 4个部分组成

    在这里插入图片描述

    状态行

    由http协议版本,状态码,状态码的描述文本 3个部分组成,之间用空格隔开
    在这里插入图片描述

    响应头

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

    在这里插入图片描述

    空行

    最后一个响应头部字段结束之后,会紧跟一个空行,用来通知客户端响应头部至此结束

    响应消息中的空行,用来分隔 响应头和响应体

    响应体

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

    在这里插入图片描述

    HTTP请求方法

    什么是

    HTTP请求方法 属于http协议中的一部分,请求方法的作用,用来表明 要对服务器上的资源执行的操作

    最常用的请求方法 GET和POST

    HTTP请求方法

     GET   发送请求来获得服务器上的资源(查询)
     POST  向服务器提交资源(提交表单或上传文件) 新增
     PUT   向服务器提交新的资源,替换服务器对应的旧的资源(修改)
     DELETE  请求服务器删除指定的资源(删除)
    
    • 1
    • 2
    • 3
    • 4
    HTTP响应状态码

    HTTP响应状态码 属于http协议中的一部分,用来标识响应的状态

    响应状态码会随着响应消息一起发送至客户端浏览器,浏览器根据服务器返回的响应状态码,就能知道这次http请求的结果是成功还是失败

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

    1xx   信息,服务器收到请求,需要请求者继续执行操作(实际开发中,很少遇到1xx 的状态码)
    2xx   成功,操作被成功接收并处理
    3xx   重定向,需要进一步操作以完成请求
    4xx   客户端错误,url错误,请求包含语法错误无法完成请求
    5xx   服务器错误,服务器在处理请求的过程中发生了错误
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2xx成功相关的响应状态码

    2xx表示服务器已成功接收到请求并进行处理

    200    ok    请求成功,一般用于get和post请求
    201          已创建,成功请求并创建了新的资源,用于put和post请求
    
    • 1
    • 2
    3xx成功相关的响应状态码

    服务器要求客户端重定向,需要客户端进一步的操作以完成资源的请求

    301  永久移动  请求的资源被永久的移动到新的URL,返回信息包括新的URL
    302  临时移动  资源只是临时移动,客户端应继续使用原有的URL
    304  未修改   所请求的资源未修改,服务器返回该状态,不会返回任何资源
    
    • 1
    • 2
    • 3
    4xx成功相关的响应状态码

    客户端请求有非法内容跟,从而导致这次请求失败

    400   语法有错,  请求参数有错误
    401   当前请求需要用户验证  (token)
    403   服务器已经理解请求,但是拒绝执行它
    404   服务器无法根据客户端请求找到资源(路径错误)
    408  请求超时,服务器等待客户端发送的请求超时
    
    • 1
    • 2
    • 3
    • 4
    • 5
    5xx成功相关的响应状态码

    服务器未能正常处理客户端的请求而出现的意外错误

    500   服务器内部错误,无法完成请求
    501   服务器不支持该请求方法,无法完成请求(只有GET和HEAD请求方法是要求每个服务器必须支持的,其它请求方法在不支持的服务器上会返回501)
    503   由于超载或者系统维护,服务器暂时无法处理客户端的请求
    
    • 1
    • 2
    • 3
  • 相关阅读:
    ASP.NET Core中如何限制响应发送速率(不是调用频率)
    Mybatis多表查询
    python Gui编程工具详解:beeware
    5 分钟速通 SVG
    【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】
    【IEEE】IEEE论文接收后proof(校样)全流程实例讲解
    Spring——【第一章入门】:核心Aop与Ioc
    Spark VS Flink,大数据该学什么
    多线程 _ 基础篇 _ 线程安全问题【JavaEE初阶】
    【数组的中心位置】python实现-附ChatGPT解析
  • 原文地址:https://blog.csdn.net/idiot_MAN/article/details/126777143