何为HTTP协议?HTTP中文名称为超文本传输协议,是互联网上应用最为广泛的一种网络协议,作为约束HTTP请求与HTTP响应的规则;HTTP协议主要由Http请求和Http响应两部分组成,注意请求与响应都是成对存在的;
如何发送HTTP请求?HTTP请求的发送方式主要有以下几种:
1、通过浏览器的地址栏(输入网址的地方)
2、通过HTML当中的form表单标签
3、通过HTML中a标签中的href属性
4、通过HTML中img标签的src属性
上面提到了HTTP协议主要由Http请求和Http响应两部分组成,那么Http请求和Http响应又是由什么组成的呢?
Http请求主要由请求行、请求头、请求体三部分组成;
请求行由请求方式、请求的资源、协议版本组成 ,例如GET /index.html?username=zs&pwd=123456 HTTP/1.1就是一个简单的请求行,其中GET为请求方式,/index.html?username=zs&pwd=123456为请求的资源,HTTP/1.1为协议版本;说到协议版本,协议版本又分为HTTP/1.0和HTTP/1.1,HTTP/1.0是发送请求,创建一次连接,获得一个web资源,连接断开;HTTP/1.1是发送请求,创建一次连接,获得多个web资源,保持连接;
请求头主要是客户端浏览器发给远程服务器的一些信息,用键值对key:value表示,下面列举一些常见的请求头:
Cookie:用于存放浏览器从远程服务器上缓存下来的cookie信息
Content-Length:代表的是请求体的长度
Content-Type:如果是POST请求时请求头中会有这个信息,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码
Referer:主要是浏览器访问远程服务器时会通过这个信息告知服务器当前请求来自何处,如果是直接访问而不是跳转访问的话,则不会有这个头;通常用于作为防盗链
If-Modified-Since:主要用于浏览器告知远程服务器本地缓存的最后变更时间
User-Agent:主要用于浏览器告知远程服务器关于浏览器自己和操作系统的相关信息
Connection:浏览器和远程服务器当前的连接状态,Keep-Alive表示连接中,Close表示已关闭
Host:浏览器请求的远程web服务器的主机名
Accept:浏览器告知远程服务器它所支持的MIME类型
Accept-Encoding:浏览器告知远程服务器它所支持的数据压缩格式,如:GZIP压缩等
Accept-Language:浏览器告知远程服务器它所支持的语言
请求体:当请求方式是POST时,请求体中包含有请求的参数;如果请求方式为GET,那么请求参数不会出现在请求体中,会拼接在url地址后面,例如GET /index.html?username=zs&pwd=123456 HTTP/1.1中?后面的username=zs&pwd=123456就是请求参数
Http请求示意图:
Http响应主要由响应行、响应头、响应体三部分组成;
响应行由协议版本和状态码组成,格式为:HTTP/1.1 200 OK,以下为常见的状态码:
200 :请求成功
302 :请求重定向
304 :请求资源没有改变,访问本地缓存
404 :请求资源不存在,通常是用户路径编写错误,也可能是远程服务器资源已删除
500 :远程服务器内部错误,通常程序抛异常
响应头主要是远程服务器响应给客户端浏览器的一些信息,用键值对key:value表示,下面列举一些常见的响应头:
Location:指定响应的路径,需要与状态码302配合使用,完成请求重定向的跳转
Content-Type:响应体的类型(MIME类型)
Content-Disposition:客户端浏览器以下载的方式解析正文
Set-Cookie:远程服务器向客户端浏览器写入的cookie信息
Content-Encoding:远程服务器使用的压缩格式
Content-length:代表的是响应体的长度
Server:远程服务器名称
Last-Modified:远程服务器告知浏览器它上面文件的最后修改时间
响应体主要是服务器响应给客户端浏览器的页面正文
Http响应示意图: