HTTP协议详解

本文详细介绍了HTTP协议的基本概念,包括无状态特性、通信流程,以及GET、POST等常见请求方法。同时,阐述了HTTP请求报文和响应报文的结构,包括请求行、请求头、响应状态码等关键元素,并提及了常见的响应头如Location和Server。此外,还提及了HTTP状态码的分类及其含义。
摘要由CSDN通过智能技术生成

1、概述

1.1 Http协议简介

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
它是一个无状态的协议,即客户端第二次向服务器访问同一个资源时,服务器无法识别出这是第几次访问。这样的好处是简化了服务器的设计,使其能够更好地支持大并发量的http访问。

1.2 Http协议通信过程

OSI七层模型和TCP/IP五层模型:
在这里插入图片描述
Http分层解析:
在这里插入图片描述
(1)客户端通过浏览器输入域名后,DNS通过HTTP协议将域名解析成对应的ip地址;
(2)传输层通过UDP/TCP协议和server建立连接(三次握手);
(3)握手成功后,组装http报文并发送到server;
(4)server接收到报文,解析报文,发送响应数据;
(5)browser接收到响应数据,解析数据,渲染页面。

2、Http协议常用的请求方式

2.1 常用请求方式的作用与区别

请求方式作用说明
get向服务器请求资源直接请求一个url,或者将请求参数用‘?’拼接在url后,多个参数间用‘&’分隔
post向指定资源提交数据,修改或创建资源将请求数据以key:value形式封装在http协议的请求body中,可以传输大量的数据
put更新指定资源请求参数封装在body中
delete删除request-url所标识的资源
options使服务器传回该资源所支持的所有HTTP请求方法向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作

注:对于get和post来说,实际上其url长度和body长度是不具有限制的,但一般浏览器和服务器会对其做出限制,不同浏览器和服务器的限制可能不同。

2.2 部分参数说明

body中的请求数据有四种类型:

  • application/json:json格式
  • application/x-www-form-urlencoded:浏览器原生表单
  • multipart/form-data:表单格式
  • text/xml:这种直接传的 xml 格式

3、Http协议请求报文格式

在这里插入图片描述

  • 请求行:请求方法 url 协议版本
  • 请求头:
    User-Agent:产生请求的浏览器类型;
    Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
    Accept-Language:客户端可接受的自然语言;
    Accept-Encoding:客户端可接受的编码压缩格式;
    Accept-Charset:可接受的应答的字符集;
    Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
    connection:连接方式(close 或 keepalive);
    Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
  • 请求体:请求的数据

4、Http协议响应报文格式

在这里插入图片描述

  • 响应行:HTTP/1.1 200 OK
  • 响应头:
    Location:Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源;
    Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。
    Vary:指示不可缓存的请求头列表;
    Connection:连接方式;
    对于请求来说:close(告诉 WEB 服务器或者代理服务器,在完成本次请求的响应后,断开连接,不等待本次连接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求);
    对于响应来说:close(连接已经关闭); keepalive(连接保持着,在等待本次连接的后续请求); Keep-Alive:如果浏览器请求保持连接,则该头部表明希望WEB 服务器保持连接多长时间(秒);例如:Keep-Alive:300;
    WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401 (未授权的)响应消息中,这个报头域和前面讲到的Authorization 请求报头域是相关的,当客户端收到 401 响应消息,就要决定是否请求服务器对其进行验证。如果要求服务器对其进行验证,就可以发送一个包含了Authorization 报头域的请求;
  • 响应体:响应正文

5、响应状态码

状态码类别含义
1xxInformational接受的请求正在处理
2xxSuccess请求正常处理完毕
3xxRederection需要进行附加操作以完成请求
4xxClient Error服务器无法处理请求,如400代表请求语法错误导致服务无法识别;401代表需要授权;403代表拒绝提供服务;404代表服务器找不到资源
5xxServer Error服务器处理请求出错,如500代表服务器内部错误;502网关错误;504网关超时
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值