一、       什么是HTTP协议?

HTTP协议全名超文本传输协议(HyperText Transfer ProTocal),是互联网上应用最广泛的一种网络协议。所有的www文件都要遵循这个协议,最初目的是为了提供一种发布和接收HTML页面的方法。后来演化为约束请求和响应的规则。

二、       组成部分

1、        请求

2、        响应

二者都是成对出现的

三、       请求的发送方式

1、        通过浏览器的地址栏

2、        通过html当中的form表单(如登录注册表单,点击提交后会跳转)

3、        通过a超链接的href(超链接)

4、        src属性

四、       Http请求

1、        请求行:包括请求方法的类型、URL、协议和协议的版本。

eg:

GET/sample.jsp HTTP/1.1请求的资源

其中协议版本有如下分类:

HTTP/1.0:发送请求,创建一次连接,获得一个web资源,断开连接。

HTTP/1.1:发送请求,创建一次连接,获得多个web资源,保持连接。

目前普遍用HTTP/1.1。

2、        请求头

 

3、        请求体

当请求方式是post时,请求体就会有请求的参数。

当请求方式是get,那么请求参数不会出现在请求体中,而是拼接在url地址中。

 

总结:

1、        请求行:包括请求方法的类型(是post还是get)、URL(要访问资源的唯一地址)、协议的版本(是http/1.0还是其他)。请求的方法就是客户端与服务器端交互的方法,包括GET方法和POST方法,后者安全性更好,所以一般采用后者。

2、        请求头中包含了很多客户端要求的环境,就是规定了服务器端返回过来的内容的形式,例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

3、        请求正文与请求头之间存在一行空格,代表请求头已结束,剩下的是请求正文。请求正文包含了用户具体要向服务器端申请访问哪些资源。

五、       Http响应

1、        响应行

包括Http协议和状态码。其中常见状态码有

200:请求成功

302:请求重定向(做跳转)

304:请求资源未改变,访问本地缓存(访问结果与上次相同,浏览器会直接访问上次缓存的内容)

404:请求资源不存在,可能是用户输入地址错误或服务器资源已删除

500:服务器内部错误,通常会在程序中抛出异常

 

其他状态码:

以2开头的一般是成功

 

以3开头的是重定向

 

以4开头的是客户端错误

 

以5开头的是服务器错误。

 

2、        响应头

服务器以键值对的形式将信息返回给客户端

 

3、        响应体

具体返回给客户端的信息。与响应头之间用一行空行隔开。

4、        总结:

以一个例子详细解析Http响应

HTTP应答与HTTP请求相似,HTTP响应也由3个部分构成,分别是:

l 协议状态版本+状态码

l 响应头(Response Header):包括如服务器类型、语言、日期等信息

l 响应正文:服务器返回的HTML页面

下面是一个HTTP响应的例子:

HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2018 13:23:42 GMT
Content-Length:112
 
<html>

<head><title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>