一、 什么是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>