HTTP简单介绍

HTTP,Hyper Text Transfer Protocol,超文本传输协议,是一个基于请求&&相应模式的,无状态的协议. 它是浏览器和服务器之间最常用的通信协议,是浏览器,是数据传输的一种约定. 浏览器和服务器只要遵循这个约定就能进行通讯(数据传输)了.

1.请求与相应

浏览器向服务器发送数据,我们称之为请求. 服务器向浏览器发送数据,我们称之为响应.

1)浏览器向服务器发出请求的方式有哪些呢??

在浏览器地址栏中通过地址访问,这种方式最常用. 另外,还有点击表单的提交按钮,点击超链接,发送AJAX请求,等等...

2)HttpWatch

IE浏览器下的抓包工具,可以拦截HTTP请求与响应,查看浏览器与服务器之间的通讯详情. 该工具是一个浏览器插件,安装后会自动嵌入到浏览器中. HttpWatch只能在IE,FireFox浏览器中使用.

上面提到了:HttpWatch可以拦截HTTP请求与响应. 假如我们在win10中使用HttpWatch 10.XX.XX插件,该插件就会拦截HTTP请求和响应...

另外,用户通过浏览器中的地址向服务器发送一次请求,实际上浏览器向服务器发出的请求却不只一次. 这可以通过HttpWatch插件查看...

2.HTTP版本

 HTTP是应用层协议,它规定了我们访问网页的时候如何进行缓存,以及请求什么格式等等.

这里说一下TCP/IP. 它是传输层协议,主要用于可靠传输,保证数据完整性(不管服务器向浏览器传输什么数据,都通过IP协议的操作,把数据分段,然后输送,同时保证在这个过程中,数据不会丢失,如果丢失数据,会要求服务器重新发送完整数据).

浏览器和服务器之间进行通讯的过程中包括建立连接,释放连接. 而HTTP 1.0和HTTP 1.1两个版本在数据传输上有很大的区别. 下面来说一下:

前面已经说过,我们通过浏览器地址栏中的地址向服务器发送一次请求,实际上浏览器向服务器发送不止一次的请求...如果使用HTTP 1.0作为我们的应用层协议,当建立连接后第一次请求得到服务器的响应后关闭连接,然后才能发送第二次请求. 如果使用HTTP 1.1作为我们的应用层协议,只要建立了TCP连接,客户端发送的请求不受服务器返回的响应的限制.

前面说过,HTTP1.0的存在,使得浏览器和服务器建立连接之后进行一次数据请求-->响应就得关闭服务器. 而HTTP 1.1的应用解决了上述弊端. 这是因为HTTP1.1在浏览器向服务器发送的请求中增加了Connection参数,有了这个参数我们根据HttpWatch插件看到浏览器每次向服务器发送请求都有"Connection=keep-alive",这里注意关闭服务器请求中的参数有"connection=close"字样...

然后说一下HTTP 1.1新增的请求头,有了它我们可以直接定位到指定的虚拟主机.

3.HTTP协议组成

HTTP协议分为请求协议和响应协议. 我们在讲这两者的时候,先来说一下url,uri...url,统一资源定位符.uri,统一资源标识符.

1)请求协议的格式

请求协议一共包括4个部分,分别是请求行,请求头,空白行,请求正文.

其中请求行中包括请求方法,uri,HTTP协议版本这些信息

比如:

POST /myweb/login.html HTTP/1.1
Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:35.0) Gecko/20100101 Firefox

.....


user=jeffrey&pwd=1234  //此行以下为提交的数据

2)响应协议的格式

响应协议一共包括4个部分,分别是响应行,响应头,空白行,响应正文

其中响应行中包括HTTP协议版本, 请求状态(200,表示请求成功)

比如:

POST HTTP/1.1 200
Accept-Ranges: bytes

ETag: W/"330-1482565608120"
...


响应正文, 这里放的是浏览器请求的页面,代码较多,这里就不再写了~~

4.状态碼

当进行web应用访问时,经常会看到一些2,4,5开头的提示信息页面. 这些就是HTTP协议规定的,让服务器根据情况传递给浏览器的状态码,表示服务器对当前请求的处理状态.

常用的状态码:

2xx: 表示页面请求成功, 最常用的状态码是200

4xx:表示请求错误,其中最常用的状态码是404,表示资源找不到. 这种状态码一般是资源路径不对.

5xx:表示服务端错误,其中最常用的状态码是500,表示服务器内部错误. 一般是服务器的Java脚本出错.


5.GET,POST两种提交方式

1)GET请求

由于GET请求将提交的数据显示在地址栏, 这就导致了GET提交的三点不足:

参数值只能是字符串,而不能是其它类型.

该请求方式只适合少量数据的提交处理.

由于提交的数据显示在地址栏中,所以安全性低.

另外,GET请求有一个优点:

当浏览器向服务器发送的请求得到响应后,即服务器向浏览器返回了指定的页面, 浏览器会将这些数据缓存到本地,当浏览器发出相同的请求,会直接读取在Cache中的缓存数据,而不会向服务器发送请求的~~

2)POST请求的特点:

POST请求将提交的数据保存在请求正书中,这种提交方式的三个特点:

POST请求提交的数据可以使任意类型的

POST请求适合大量数据的提交

由于POST请求提交的数据是保存在请求正书中的,所以想必GET请求来说,安全性较高.

另外,POST请求的一个注意点:
浏览器请求得到服务器的响应之后, 相关数据不会缓存在本地. 简单地说,POST请求方式不支持本地缓存~~




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值