JavaWeb(二)HTTP协议


HTTP是超文本传输协议,是一种基于请求与响应模式的、无状态的网络协议,是浏览器和服务器之间最常用的通讯协议。HTTP协议是浏览器与服务器减的数据传递格式的一种约束。浏览器与服务器只要遵循这个约定,就可以进行数据通讯了。

一、请求与响应

由浏览器向服务器发送数据,成功为Request。由服务器向浏览器发送数据,则称为响应Response
什么才是浏览器向服务器发送的请求?在浏览器地址中通过地址访问最典型的请求方式,另外还有点击表单的提交按钮、点击超链接。

1.1.HTTP版本

客户端若要向服务器端发出请求,必须首先在它们之间创建一个TCP(传输控制协议)连接。而当客户端与服务端的通讯结束后,TCP连接将关闭。而这个连接就是基于HTTP协议的。

1.1.1 HTTP1.0版本

HTTP1,0协议规定,客户端若要向服务端发出请求,必须首先在它们之间创建一个TCP(Transfer ContolProtocal ,传输控制协议涟接·而当客户端接收到服务端所发出的响应后,服务端将关闭TCP连接。只有等待上一次的请求所对应的响应被客户端接收到后,客户端才可发出第二次请求。HTTP1.0协议中的连接属于非持久连接,且服务器不跟踪和记录任何一次请求与响应。
在这里插入图片描述

HTTP

1.1版本是目前浏览器默认采用的HITp协议版本,是一种持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多css、js、图片等资源的页面,其所发出的多个请求和响应可以在一个连接中传输。但每个单独的页面文件的请求和响应仍然需要使用各自的连接。·

HTTP1.1还允许客户荡不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

HTTP1.0在客户端接收到服务揣发送来的响应后,TCP连接马上关闭。而HTTP1.1的连接是什么时候关闭呢﹖客户端在发送创建TCP连接请求之前首先计算出本次连接浏览器所要发送的请求数量,即一次手工请求加上其所携带的所有自动请求数量。当所有浏览器所发出的请求全部发送完毕后,客户端会再自动发送一个关闭TCP连换的请求。这个请求在Httpwatch中是看不到的。

为了防止服务器主动将TCP连接关闭,在每一个请求中都携带了一个参数 Connection ,用于告诉股务器是否关闭连接·在
Httpwatch中可以看到的这些请求中,其connection参数值均为Keep-Allive保持连接。只有当客户荡发送了关闭TCP连接请求时,服务器才会将TCP连接关闭。

·
在这里插入图片描述

1.2HTTP协议组成

包括两部分:请求协议与相应协议。分别用于指定请求与响应信息的格式。

1.2.1请求协议

客户端发送给服务器的格式叫做“请求协议”;
URL:统一资源定位符。是互联网上标准资源的地址,可以在全球范围内唯一的确定一个资源。
URI:统一资源标识符,用于标识一个资源的名称。通过这种名称命名的资源可以被互联网定位和访问。
请求协议规定:
HTTP URL
http://host[:port]/[abc_path]
http表示要通过HTTP协议来定位网络资源;
host表示合法的Internet主机域名或者IP地址
abs_path指定请求资源的URI

请求的信息格式包括四部分:请求行,请求报头,空白行,请求正文。

1.3状态码❤️❤️❤️

当进行Web应用访问时,经常会看到一些以4开头或者以5开头的提示信息页面。这些就是HTTP协议制定的,让服务器传递给浏览器的状态码,表示服务器对当前请求的处理状态。
1.3.1常用状态码
常用的状态码以2,4,5开头,分别表示的意义为:
2**:表示对请求计算与响应成功。其中常用的状态码是200。
4**:表示请求错误。其中常见的状态码是404,表示资源找不到。一般都是请求路径书写有问题。
5**:表示服务端错误。其中常见的状态码是500,表示服务器内部错误。一般都是服务端的Java代码发生错误。

1.4HTTP请求与响应

由三部分组成:分别是请求行,请求头,请求正文。
1.Get请求(没有请求体)
2.Post请求
在接收和解释请求消息后,服务器返回一个HTTP响应消息。HTTP响应也是由三个部门组成,分别是:状态行、消息报头、响应正文。

1.5GET与POST请求方式

HTTP协议规定,浏览器向服务器提交请求的提交方式有8种。但GET与POST请求时最常见的两种请求提交方式。

1.5.1GET请求

由于GET会将所携带的参数作为请求URL中的一部分出现,所以请求参数会显示在地址栏。导致以下不足:

  • 参数值只能是字符串,而不能是其它类型。
  • 可以携带的数据量小
  • 数据安全低
    但GET请求由一个很重要的特征:客户端一旦接收到“服务器向GET请求发送的响应”后,浏览器会自动缓存响应。当客户再次进行相同请求时,将直接读取本地浏览器缓存中数据,而不再向服务端真正发送数据,让用户感觉服务端的相应很快,提升用户体验,减轻了服务器压力。

1.5.2POST请求

POST请求会将请求所携带的数据以请求正文的形式存在,所以与GET方式相比,就显示出了两点长处:
👉数据类型可以是任意类型,还可以是声音,视频,图片等文件
👉请求可以携带的数据量大
👉数据安全性高
但发出POST请求的客户端浏览器不会对接收到的“服务器向POST请求发送的响应”进行缓存。当用户再次进行相同请求时,仍是正真向服务器发送的请求,从服务器读取的数据。
GET请求的目的一般时客户端要从服务端下载资料,发送相同的请求就代表要下载相同的而自愿。既然要下载相同的资源而这些资源已经下载到了客户端,那么就无需再下载了。所以也就无需向服务器发送真正的下载请求了。所以就将GEY提交方式设置为了"GET请求的响应结果会被浏览器缓存’。
但POST请求的目的一般是客户端要向服务端上传资料。对于服务器端上传资料后响应结构,浏览器是无需缓存的。

1.5.3默认请求提交方式

浏览器向服务器提交请求的方法有五种,这五种方法所用的提交方式要么是GET方式,要么是POST方式

请求方法提交方式
表单请求默认GET,可以指定POST
AJAX请求默认 GET,可以指定POST
地址栏请求GET请求
src资源路径请求GET请求
超链接请求GET请求

1.5.4 请求提交方式的选择

🤙提交时所携带的数据类型不是字符串
🤙提交时所携带的数据量比较大
🤙提交时所携带的数据具有敏感性,安全性要求较高
能够实现POST提交的方式只有两种:通过表单的POST提交,与通过AJAX的POST提交,其他方式均为GET提交方式。对于一个提供了POST登录页面的系统,若用户试图通过地址栏等方式进行登录,则说明其一定是非法登录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

释怀°Believe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值