HTTP协议介绍
-
HTTP:HyperText Transfer Protocol:超文本传输协议,是互联网上应用最为广泛的协议之一,有W3C维护和管理的标准协议,位于TCP/IP协议的应用层协议,是学好web开发的基石。
-
作用:约束请求和响应的数据格式
-
组成部分:
1,请求部分:客户端给服务器传递的信息格式
2,响应部分:服务器给客户端传递的信息格式请求信息的组成
客户端带给浏览器的内容:
HTTP协议请求部分三部分组成
1,请求行
由请求方式,请求的uri地址以及客户端使用的协议及版本号,位于第一行。- 请求方式
GET:如果有请求参数,会出现在请求uri地址后面,相对不安全且有大小限制。默认即为GET请求方式
POST:如果有请求参数,会出现在请求正文部分,相对安全且没有长度限制
演示:
- 请求方式
创建表单,使用post和get方式提交
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<form method="get" action="index.html" enctype="application/x-www-form-urlencoded">
用户名1:<input name="username1" value="admin1"/><br/>
密码1:<input name="password1" value="sorry1"/><br/>
<input type="submit" value="登录1"/>
</form>
<hr/>
<form method="post" action="index.html" enctype="application/x-www-form-urlencoded">
用户名2:<input name="username2" value="admin2"/><br/>
密码2:<input name="password2" value="sorry2"/><br/>
<input type="submit" value="登录2"/>
</form>
</body>
</html>
观察GET提交:
观察POST提交:
请求正文内容
这里还有几个不常用的请求方式:PUT,DELETE,OPTIONS 等,目前主流的浏览器也不支持
注意uri和url区别 !
请求URI:统一资源标识符,就是一个地址,相当于家里的门牌号
请求URL:统一资源定位符,由协议及版本号,主机地址端口号以及资源地址组成(缺少任意部分即 不是URL)
2,请求消息头
从第二行开始,到第一个空行结束
消息头存在一个头包含多个值的情况,多个值之间用;分隔,也存在多个名称相同的头有不同的值的情况(头:值/r/n头:值)
作用:浏览器端传递给服务器端的附加信息,服务器端可以根据这些信息得到客户端的一些情况
常见的请求消息头及其含义:
Host:请求的主机地址及其端口号
Connecttion:keep-alive,http1.1时固定值,保持连接的意思
cache-control:max-age=0;告诉服务器缓存数据的死亡时间
content-type:请求正文的数据类型
user-Agent:浏览器端类型及版本号
Accept:浏览器端支持的数据类型
Accept-Encoding:gzip,告诉服务器浏览器支持的压缩格式
Accept-Language:浏览器端支持的语言
Referer:这个页面从哪个页面跳转过来的
cookie:携带的一小段信息(与会话技术有关)
content-length:请求正文的数据长度
3,请求正文(post方式才有)
此处的参数是由key=value&key1=value1组成,key就是请求参数名,value就是值;多个参数由&分割。注意此处的展现形式是application/x-www-form-urlencoded类型数据。
响应信息的组成
HTTP协议请求部分三部分组成
一,响应行
由协议及版本号,响应码和响应码描述组成
-
常见的响应码及其含义
1,2XX:一般是表示正常
200:请求和响应一切正常
2,3XX:一般需要客户端做进一步操作
302:请求的资源已经更换了位置(一般与Location共同完成重定向)
304:请求的资源内容没有变化
3,4XX:浏览器端发生了错误
403:浏览器访问的内容需要权限
404:访问的资源不存在
405:请求的方式服务器不支持
4,5XX:服务器端出现了错误
500:服务器程序发生异常
二,响应消息头
位置:从第二行开始到第一个空行结束
作用:告诉浏览器端的一些附加信息,浏览器根据这些信息做出一定的反应
常见的响应消息头及其含义:
Location:告诉浏览器端新的资源的位置
Refersh:告诉浏览器刷新自己
Refersh:1表示一秒后刷新
Refersh:1;URL=“http://www.baidu.com”表示一秒后刷新到百度界面
Content-Encoding:告诉浏览器端响应正文的压缩格式
Content-Disposition:告诉浏览器以下载的方式打开文件
Content-type:告诉浏览器响应正文的数据类型
三,响应正文
页面显示的内容即使响应正文的内容,正文和网页源码看到的是一样的