Http协议介绍

1. Http协议

1.1. 软件开发的两种结构

 

 

 

 

1.2. 什么是http协议

HTTPhypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

HTTP协议的版本:HTTP/1.0HTTP/1.1

1.3. HTTP1.0和HTTP1.1的区别

HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。

HTTP1.1协议,允许客户端与web服务器建立连接后,可以获得多个web资源。

思考题:在一个连接上获取多个web资源。

一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求。

1.4. http请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

请求行

若干消息头

空行

 

1.5. http请求——请求行

请求行由三部分组成:请求方式  资源路径  协议版本

请求方式:

包括:POSTGETHEADOPTIONSDELETETRACEPUTCONNECT

常用的有: GETPOST

用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式实现。

资源路径:/FirstWeb/wel,统一资源标记符

协议版本:

http1.0:当前浏览器客户端与服务器端建立连接之后,只能发送一次请求,一次请求之后连接关闭。

http1.1:当前浏览器客户端与服务器端建立连接之后,可以在一次连接中发送多次请求。(基本都使用1.1

1.6. http请求:get和post的区别

 区分哪些是GET请求? 哪些POST请求?

GET:在浏览器直接输入URL<a href=""> <form method="get" >

POST<form method="post" >

GET请求数据位于请求行中 ,POST请求数据位于请求体中

GET /day4/form.html?username=zhangsan HTTP/1.1

POST /day4/form.html HTTP/1.1

...

username=lisi

3) GET请求数据在URL上显示,所以有长度限制,通常是1kb

1.7. http请求—消息头

Accept: text/html,image/*      -- 浏览器接受的数据类型
Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式
Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式
Accept-Language: en-us,zh-     --浏览器接受的语言
Host: www.it315.org:80          --(必须的)当前请求访问的目标地址(主机:端口)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间
Referer: http://www.it315.org/index.jsp      -- 当前请求来自于哪里
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型
Cookie:name=eric                     -- 浏览器保存的cookie信息
Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。
Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间
View Code

 

1.8. http响应

一个HTTP响应代表服务器向客户端回送的数据,它包括:

一个状态行(响应行)

若干消息头

空行

实体内容

 

1.9. http响应-状态行

状态行

格式: HTTP版本号 状态码 状态描述

举例:HTTP/1.1 200 OK

状态码标识服务器对请求的处理结果,是一个三位数。如下:

 

302 307 重定向 304使用

1.10. http响应—常见响应头

Location: http://www.it315.org/index.jsp   -表示重定向的地址,该头和302的状态码一起使用

Server:apache tomcat                 ---表示服务器的类型

Content-Encoding: gzip                 -- 表示服务器发送给浏览器的数据压缩类型

Content-Length: 80                    --表示服务器发送给浏览器的数据长度

Content-Language: zh-cn               --表示服务器支持的语言

Content-Type: text/html; charset=GB2312   --表示服务器发送给浏览器的数据类型及内容编码

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --表示服务器资源的最后修改时间

Refresh: 1;url=http://www.it315.org        --表示定时刷新

Content-Disposition: attachment; filename=aaa.zip --表示告诉浏览器以下载方式打开资源(下载文件时用到)

Transfer-Encoding: chunked

Set-Cookie:SS=Q0=5Lb_nQ; path=/search   --表示服务器发送给浏览器的cookie信息(会话管理用到)

Expires: -1                           --表示通知浏览器不进行缓存

Cache-Control: no-cache

Pragma: no-cache

Connection: close/Keep-Alive           --表示服务器和浏览器的连接状态。close:关闭连接 keep-alive:保存连接
View Code

 2.请求流程

2.1. Cookie的请求流程

(1)客户端发出请求到服务端;

(2)服务端得到客户端的请求后,在响应头中Set-Cookie记录下Cookie并反馈给客户端,客户端会将收到的Cookie信息本地化,即存储起来;

(3)客户端再次发送请求的时候,在请求头添加Cooie后发送给服务端;

(4)服务端将接收到的Cookie信息与存储在本地的Cookie进行检查校验,如果一致,就显示登录系统成功后的信息;如果不一致,直接跳转到登录的页面。

2.2. Session的请求流程

(1)客户端中输入用户名和密码,点击“登录”按钮发送请求到服务端;

(2)登录成功后,服务端把 SessionID 存储在数据库中并且在响应头 SetCookie中记录下SessionID反馈给客户端;

(3)客户端再次发送请求的时候,在请求头Cookie带上SessionID信息;

(4)服务端接收到客户端发送的SessionID,会与存储在服务端数据库中的SessionID 做校验检查是否存在,如果存在则显示用户的信息;如果不存在就跳转到登录的页面。

2.3. Token的请求流程

(1)客户端使用账号和密码登录到系统;

(2)服务端接收到客户端请求的参数后,验证用户名和密码是否正确;

(3)验证用户名和密码成功后,服务端会签发一个Token 的值,并且把Token返回给客户端;

(4)客户端获取到Token后,客户端会把Token存储起来;

(5)客户端再次向服务端发送请求的时候,需要带着服务端签发的Token,服务端接收到客户端发送的Token会进行校验,校验通过后服务端会返回客户端请求的响应数据。

 

posted @ 2020-04-02 17:32  嗨林子  阅读(211)  评论(0编辑  收藏  举报