HTTP协议简述

本文详细解读了HTTP协议的概念、特点、请求报文结构,包括首行、请求头和响应、状态码,以及Cookie和Session在保持用户会话中的作用。同时介绍了Tomcat和SpringBoot在Web服务器开发中的应用。

HTTP

概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。

特点:

  • 基于TCP协议:面向连接,安全
  • 基于请求-响应模型的:一次请求对应一次响应
  • HTTP协议是无状态的协议;对于事务处理没有记忆能力。每次请求-响应都是独立的。
    • 缺点:多次请求间不能共享数据
    • 优点:速度快

用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP保温叫做请求报文,响应端(服务器端)的叫响应报文。HTTP报文本省是由多行数据构成的字符串文本。HTTP报文大致可分为报文首部和报文主题两块。两者由最初出现的空行来划分。通常,并不一定要有报文主题。

在这里插入图片描述

请求报文

HTTP请求协议由首行、请求头(header)、空行、正文(body)组成。通过空行来区别header和body,body可有可无,如果body存在,则在header中会定义一个content-length属性来表示body的长度。
在这里插入图片描述

首行

首行 = 方法 + URL + 版本号

  • URL

一个完整的URL包括:

协议://主机名(域名):端口号/路径/查询字符串query string

例如:在这里插入图片描述

  • 协议

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

http 是协议。它表明了浏览器必须使用何种协议。它通常都是 HTTP 协议或是 HTTP 协议的安全版,即 HTTPS。Web 需要它们二者之一,但浏览器也知道如何处理其他协议,比如 mailto:(打开邮件客户端)或者 ftp:(处理文件传输),所以当你看到这些协议时,不必惊讶。

  • 域名Authority

    在这里插入图片描述

    • www.example.com 是域名。它表明正在请求哪个 Web 服务器。或者,可以直接使用IP address,但是因为它不太方便,所以它不经常在网络上使用。
    • :80 是端口。它表示用于访问 Web 服务器上的资源的技术“门”。如果 Web 服务器使用 HTTP 协议的标准端口(HTTP 为 80,HTTPS 为 443)来授予其资源的访问权限,则通常会被忽略。否则是强制性的。
  • 资源路径

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    • /path/to/myfile.html 是网络服务器上资源的路径。在 Web 的早期阶段,像这样的路径表示 Web 服务器上的物理文件位置。如今,它主要是由没有任何物理现实的 Web 服务器处理的抽象。
  • 参数

在这里插入图片描述

  • ?key1=value1&key2=value2 是提供给网络服务器的额外参数。这些参数是用 & 符号分隔的键/值对列表。在返回资源之前,Web 服务器可以使用这些参数来执行额外的操作。每个 Web 服务器都有自己关于参数的规则,唯一可靠的方式来知道特定 Web 服务器是否处理参数是通过询问 Web 服务器所有者。

  • 锚点

    在这里插入图片描述

    • #SomewhereInTheDocument 是资源本身的另一部分的锚点。锚点表示资源中的一种“书签”,给浏览器显示位于该“加书签”位置的内容的方向。例如,在 HTML 文档上,浏览器将滚动到定义锚点的位置;在视频或音频文档上,浏览器将尝试转到锚代表的时间。值得注意的是,#后面的部分(也称为片段标识符)从来没有发送到请求的服务器。
  • 方法

    HTTP首行的方法种类很多,但常用的只有前两个

    其实方法之间没有本质的区别,只是为了让语义更加通畅,铁勺和铁铲都是铁厨具,你用来铲炒菜会很顺手,但你要是非得用来喝汤也管不了你,基本就是个这么个意思。

    请求方式请求说明
    GET获取资源。
    向特定的资源发出请求。例:http://www.baidu.com/s?wd=itheima
    POST传输实体主体。
    向指定资源提交数据进行处理请求(例:上传文件),数据被包含在请求体中。
    OPTIONS返回服务器针对特定资源所支持的HTTP请求方式。
    因为并不是所有的服务器都支持规定的方法,为了安全有些服务器可能会禁止掉一些方法,例如:DELETE、PUT等。那么OPTIONS就是用来询问服务器支持的方法。
    HEAD获得报文首部。
    HEAD方法类似GET方法,但是不同的是HEAD方法不要求返回数据。通常用于确认URI的有效性及资源更新时间等。
    PUT传输文件。
    PUT方法用来传输文件。类似FTP协议,文件内容包含在请求报文的实体中,然后请求保存到URL指定的服务器位置。
    DELETE删除文件。
    请求服务器删除Request-URI所标识的资源
    TRACE追踪路径。
    回显服务器收到的请求,主要用于测试或诊断
    CONNECT要求用隧道协议连接代理。
    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
  • GET

    GET方法时常见的HTTP请求,一般有以下几种情况可能出发GET方法的请求:

    1. 浏览器中输入URL回车

      在这里插入图片描述

    2. HTML中含有地址的一些标签

      • img标签中的src属性就可以写一个URL,浏览器会根据img中的src构造出一个HTTP GET请求;
      • a标签中的href属性,也可以通过点击网页中的a标签,构造出对应的HTTP GET请求。
    3. 使用JS,直接在浏览器前端构造出HTTP GET请求(ajax);

      在这里插入图片描述

    4. 只要是能够访问网路的编程语言,都能够造出HTTP GET 请求;

    • 特点

      1. 首行中第一个是GET;
      2. URL中的query string可以为空,也可以不为空;
      3. GET请求中有若干组header这样的键值对
      4. GET请求中一般body都为空
  • POST

    一般登录页面中会触发POST请求,输入了用户名和密码后,点击登录,就会产生POST请求。

    在这里插入图片描述

    • POST方法的特点
      • 首行中第一个是POST
      • URL中的query string一般是没有的
      • POST请求中有若干组header这样的键值对
      • POST请求中一般body都不为空,其中body的长度由header中的Content-Length来描述,body的具体数据格式由header中的Content-Type来描述。
  • GET方法与POSY方法的区别

    两者没有本质区别,使用时的场景都可以互相替代

    1. 语义不同。GET习惯上用于从服务器上获取数据,POST是向服务器传送数据。

    2. 格式不同,由于body一般是空的,所以GET习惯上通过query string来传输数据;而POST方法的query string一般为空,所以POST习惯上使用body来传输数据。

    3. 幂等性。一般情况下,程序员会把GET请求的处理实现成幂等,而POST 请求的处理,不要求实现幂等。

      幂等:一次或多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,奇人异多次执行对资源本身所产生的影响均与依次执行的影响相同。例如我通过网上银行支付一笔订单,但由于该时间段人数过多或网络不好,我支付了以后就卡在这个页面没有成功,此时若我重复提交支付操作,也只扣了一次费用,没有产生额外的负面效果,则说明该网页设计具有幂等性。

    4. 缓存,GET请求可以被缓存,可以被浏览器收到收藏夹中,而POST请求不可以。

报文头(header)

报文头包含若干个属性,格式为“ key:value ”的较之对,书无端据此获取客户端的信息。

属性名含义
Client-IP提供了运行客户端的机器的IP地址
From提供了客户端用户的E-mail地址
Host给出了接受请求的服务器的主机名和端口号
Referer提供了包含当前请求的URI的文档的URL
UA-Color提供了与客户端显示器的显示颜色有关的信息
UA-CPU给出了客户端CPU的类型或制造商
UA-OS给出了运行在客户端机器上的操作系统名称及版本
User-Agent将发起请求的应用程序名称告知服务器
Accept告诉服务器能够发送哪些媒体类型
Accept-Charset告诉服务器能够发送哪些字符集
Accept-Encoding告诉服务器能够发送哪些编码方式
Accept-Language告诉服务器能够发送哪些语言
TE告诉服务器可以使用那些扩展传输编码
Expect允许客户端列出某请求所要求的服务器行为
Range如果服务器支持范围请求,就请求资源的指定范围
Cookie客户端用它向服务器传送数据
Cookie2用来说明请求端支持的cookie版本

报文体(body)

将一个页面表单中的组件之通过键值对形式彪马成一个格式化串,承载多个请求参数的数据。

响应

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

在这里插入图片描述

在这里插入图片描述

响应头信息也是传递一些属性值。

响应状态码

  • 100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。
  • 200~299:表示服务器成功接收请求并已完成整个处理过程。常用200(OK请求成功)。
  • 300~399:重定向,请求的资源移动新位置,常用302(所请求的页面临时转移至新的url)、307和304(使用缓存资源)
  • 400~499:客户端请求有错误,404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)
  • 500~599:服务器端出现错误,常用500(请求未完成。服务器遇到不可预知的情况)。

Cookie和Session

服务器和客户端的交互仅限与请求/响应过程,结束之后便断开,在下一次请求时,服务器会认为是新的客户端,为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息。

  • Cookie:通过在客户端记录的而信息确定用户的身份

  • Session:通过在服务器端记录的信息确定用户的身份。

Web服务器

  • 对HTTP协议操作进行封装,简化web程序开发。
  • 部署web项目,对外提供网上信息浏览服务。

TomCat

一个常用的请谅解web服务器,支持servlet、jsp等少量的javaEE规范

也被称为web容器、servlet容器。

在这里插入图片描述
在这里插入图片描述

springboot中集合了该web服务器。。。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值