- HTTP协议
9.1.什么是HTTP协议?
用来规定浏览器客户端和服务器之间进行通信的方式
9.2.三个基本原则
(1)基于请求响应模型
(2)一次请求对应一次响应
(3)请求只能由客户端发出, 服务器只能被动的等待请求, 做出响应.
9.3.HTTP协议详解
9.3.1.http请求
HTTP请求信息由3部分组成:
1.请求行:包含 请求方式 请求的资源 所遵循的协议
2.请求头: http中的请求头非常多
3.实体内容: 需要传递给服务器的内容
请求行:GET /news3/1.html HTTP/1.1
请求方式:一共有7种请求方式,但真正使用的只有两种GET、POST。
POST和GET之间的区别:
GET:请求请求参数位于URL后面,所能传输的请求参数最大不超过1KB,安全性比较低。
POST:请求参数位于请求的实体内容中,没有大小限制,也比较安全
只有当一个表单method明确被指定为POST时,才是POST提交,其他情况下都是GET提交.
请求的资源:/news3/1.html
所遵循的协议:HTTP/1.1
请求头:
http协议中请求头非常多,下面列出常见的请求头及其功能:
!Host: www.tedu.cn:80
-- 需要访问的虚拟主机的名称
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) -- 客户端的基本信息
Accept: text/html,image/*
-- 通知服务器当前浏览器可以接受那些格式的数据
Accept-Language: en-us,zh-cn
-- 浏览器接受的语言环境,和国际化相关的头
Accept-Encoding: gzip,compress
-- 浏览器可以接受的压缩格式
Accept-Charset: ISO-8859-1
-- 浏览器可以接受的字符集编码
!!Referer: http://www.tedu.cn/index.jsp
-- 指是从哪个页面跳转过来的,这是和防盗链相关的头。
!!!Cookie(以后会学)
-- 和cookie相关的头
Connection: close/Keep-Alive
-- 是否继续保持连接
Date: Fri, 17 Sep 2017 18:23:51 GMT
-- 当前发送请求的时间
实体内容:
当post提交是,会存在参数,就是实体内容
比如将注册页面regist.html中form表单上添加如下属性
<form method="post" action="http://localhost/news3/1.html"> |
然后注册用户,在可以找到参数
9.3.2.http响应
HTTP响应信息由3部分组成:
1.状态行:包含 所遵循的协议 状态码
2.响应头: http中的响应头非常多
3.实体内容: 服务器发送回的内容
状态行:HTTP/1.1 200 OK
所遵循的协议:HTTP/1.1
状态码:
状态码, 就是一个三位的数值, 用来表示服务器对请求处理的结果
常见的状态码:
200: 表示服务器成功的处理该请求
302: 和location配合实现请求重定向(后面讲!)
304/307: 通知浏览器使用缓存
404: 表示请求的资源不存在, 客户端错误
500: 服务器处理请求时出现了错误!
响应头:
http协议中响应头非常多,下面列出常见的响应头及其功能:
!!!Location: http://www.tedu.cn/index.jsp
-- 配合302使用实现请求重定向
Server:apache tomcat
-- 服务器的基本信息
Content-Encoding: gzip
-- 服务器发送的数据使用的压缩格式
Content-Length: 80
-- 服务器发送的数据的大小
Content-Language: zh-cn
--服务器发送的数据使用的语言环境 国际化相关的头
!Content-Type: text/html; charset=GB2312
-- 服务器发送的数据是什么格式的,如果是字符格式的数据,则还可以通知服务器发送的数据使用的是什么编码,浏览器会根据这个头指定的编码决定使用哪个编码来打开收到的数据
!Refresh: 1;url=http://www.tedu.cn
-- 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
Content-Disposition: attachment;filename=aaa.zip
-- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头
!!!Set-Cookie:SS=Q0=5Lb_nQ; path=/search
-- 和Cookie相关的头
!Expires: -1
-- 通知浏览器是否缓存
!Cache-Control: no-cache
-- 通知浏览器是否缓存
!Pragma: no-cache
-- 通知浏览器是否缓存
--之所以一个功能有三个头,是因为历史原因.所以为了网页的兼容性考虑,通常这三个头要一起使用
Connection: close/Keep-Alive
-- 是否保持连接
Date: Fri, 17 Feb 2017 18:24:11 GMT
-- 响应时的时间
实体内容:
就是服务器响应的内容。
http 状态码
HTTP206 Partial Content
成功状态响应代码表示请求已成功完成,并且正文包含请求的数据范围