深刻理解HTTP协议--乐字节java

HTTP协议

​ HTTP 协议(Hypertext Transfer Protocol, 超文本传输协议),是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通讯的规则。用户输入地址和端口号以后就能够从服务器上取得所须要的网页信息。 html

​ 通讯规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫"<font color="red">请求协议</font>";服务器发送给客户端的格式叫"<font color="red">响应协议</font>"。java

在浏览器中 F12可查看chrome

HTTP-01.png

浏览器中的书写格式

​ 服务器端资源须要经过浏览器进行,此时由浏览器将咱们给出的请求解析为知足 HTTP 协议的格式并发出。咱们发出的请求格式须要按照浏览器规定的格式来书写,在浏览器中书写格式以下:HTTP-01.png浏览器

​ 当浏览器获取到信息之后,按照特定格式解析并发送便可。接收到服务器端给出的响应时,也按照 HTTP 协议进行解析获取到各个数据,最后按照特定格式展现给用户。服务器

HTTP协议的特色

  1. 支持客户/服务器模式。 网络

  2. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法经常使用的 有 GET、POST。每种方法规定了客户与服务器联系的类型不一样。因为 HTTP 协议简单,使得HTTP服务器的程序规模小,于是通讯速度很快。 并发

  3. 灵活:HTTP 容许传输任意类型的数据对象。传输的类型由Content-Type加以标记。 ide

  4. 无链接:无链接是表示每次链接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开链接。采用这种方式能够节省传输时间。ui

    HTTP1.1 版本后支持可持续链接。经过这种链接,就有可能在创建一个 TCP 链接后,发送请求并获得回应,而后发送更多的请求并获得更多的回应.经过把创建和释放 TCP 链接的开销分摊到多个请求上,则对于每一个请求而言,因为 TCP 而形成的相对开销被大大地下降了。并且, 还能够发送流水线请求,也就是说在发送请求 1 以后的回应到来以前就能够发送请求 2.也能够认为,一次链接发送多个请求,由客户机确认是否关闭链接,而服务器会认为这些请求分别来自不一样的客户端。 url

  5. 无状态:HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺乏状态意味着若是后续处理须要前面的信息,则它必须重传,这样可能致使每次链接传送 的数据量增大。另外一方面,在服务器不须要先前信息时它的应答就较快。

HTTP之URL

​ HTTP(超文本传输协议)是一个基于请求与响应模式的、应用层的协议,常基于 TCP 的链接方式,绝大多数的 Web 开发,都是构建在 HTTP 协议之上的 Web 应用。

​ HTTP URL (URL 是一种特殊类型的 URI,包含了用于查找某个资源的足够的信息)的格式 以下:

http://host[:port]/[abc_path]
http://IP(主机名/域名):端口/访问的资源路径
  • http 表示要经过 HTTP 协议来定位网络资源;
  • host 表示合法的 Internet 主机域名或 者 IP 地址;
  • port 指定一个端口号,为空则使用缺省端口 80;
  • abs_path 指定请求资源的 URI; 若是 URL 中没有给出 abs_path,那么当它做为请求 URI 时,必须以“/”的形式给出,一般 这个工做浏览器自动帮咱们完成。

HTTP 请求

​ HTTP 请求由三部分组成,分别是:请求行、请求头、请求正文。

​ 经过chrome浏览器, F12 —> Network查看。

  1. Get 请求(没有请求体)

    HTTP-01.png

  2. Post 请求

    HTTP-04.png

    格式

    请求行
    请求头1
    请求头2
    …
    请求空行
    请求体

    请求行以一个方法符号开头,以空格分开,后面跟着请求的 URI 和协议的版本。

    ​ 格式以下:Method Request-URI HTTP-Version CRLF

    ​ Method 表示请求方法;

    ​ Request-URI 是一个统一资源标识符;

    ​ HTTP-Version 表示请 求的 HTTP 协议版本;

    ​ CRLF 表示回车和换行;

HTTP 响应

​ 在接收和解释请求消息后,服务器返回一个 HTTP 响应消息。HTTP 响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。

深刻理解HTTP协议--乐字节java

格式

状态行
响应头1
响应头2
…
响应空行
响应体

消息头

​ HTTP 消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行), 消息报头(可选),空行(只有 CRLF 的行),消息正文(可选)组成。

​ 每个报头域都是由 <font color="red">名字+":"+空格+值</font> 组成,消息报头域的名字是大小写无关的。

请求头

​ 请求报头容许客户端向服务器端传递请求的附加信息以及客户端自身的信息。

  • <font color="red">Referer</font>:该请求头指明请求从哪里来 。

    ​ 若是是地址栏中输入地址访问的都没有该请求头 地址栏输入地址,经过请求能够看到,此时多了一个 Referer 的请求头,而且后面的值 为该请求从哪里发出。好比:百度竞价,只能从百度来的才有效果,不然不算;一般用来作统计工做、 防盗链。

响应头

​ 响应报头容许服务器传递不能放在状态行中的附加响应信息,以及关于服务器的信息和 对 Request-URI 所标识的资源进行下一步访问的信息。

  • <font color="red">Location</font>:Location响应报头域用于重定向接受者到一个新的位置。

    ​ Location响应报头域,经常使用在更换域名的时候。

    response.sendRedirect("http://www.baidu.com");
  • <font color="red">Refresh</font>:自动跳转(单位是秒),能够在页面经过meta标签实现,也可在后台实现。

    <meta http-equiv="refresh" content="3;url=http://www.baidu.com">

<a href="https://i.loli.net/2020/06/22/zbPOtKIqDjo45Mw.png">点我扫码领取</a>;

相关文章
相关标签/搜索