WEB系统
1.web概述
什么是web?
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。
web包含的技术有哪些?
Web技术包含网站网页的布局设计、代码编写、数据库建立、网络平台选择等相关技术。前端三剑客HTML、CSS、JS,通用超文本传输协议http、https
2.b/s、c/s架构
B/S(Browser/Server)指浏览器和服务器端,在客户机端不用装专门的软件,只要一个
浏览器即可。
C/S(Client/Server)指客户机和服务器,在客户机端必须装客户端软件后才能访问服
务器,如微信、抖音等。
C/S和B/S架构的区别
C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息.B/S 建立在广域网之上, 对安全的控制能力相对弱, 可能面向不可知的用户。在适用Internet、维护工作量等方面,B/S比C/S要强得多。
B/S架构需要重点考虑系统在不同的浏览器中的兼容性问题,在IE个版本浏览器 (IE6/7/8/9/10/11)、火狐浏览器、谷歌浏览器,Safari浏览器等;C/S 架构需要考虑在不同的系统(IOS和Android),不同的系统版本(IOS15等,android8等,),不同的手机品牌(华为,vivo,OPPO,小米等),不同的分辨率
C/S 多是建立的Window 平台上,表现方法有限,对程序员普遍要求较高;B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本.
3.http协议(超文本传输协议)
HTTP (Hypertext Transfer Protocol) 是一种用于传输超文本的应用层协议。它是互联网上数据传输的基础,用于客户端和服务器之间的通信。HTTP协议基于请求-响应模型,客户端发出请求,服务器返回响应。
HTTPS 是 HTTP + TLS(SSL)的结合,是一种对传输数据进行加密的安全HTTP协议。HTTPS有对称加密和非对称加密。SSL (secure socket layer) 和 TLS(transport layer secure)说的是同一个协议,SSL是以前的叫法。通过HTTPS协议访问web网站和通过SSH协议访问linuxs是一样的,都需要先进行主机身份认证(非用户登录的那种身份),再进行数据加密传输。
4.请求request
常用的有get,post请求,
-
GET请求用于从指定的资源请求数据,主要用于获取数据。
-
POST请求用于向指定的资源提交要被处理的数据,主要用于修改和写入数据。
区别:
get方式:不够安全,显示会把提交表单的数据带在url后面,对数据大小限制1KB。主要用于查询数据。
post方式:较安全,提交表单的数据放在请求体body,对数据大小无限制。主要用于上传(提交)数据。上传文件只能使用Post方式。
请求格式:
常规:
请求标头
请求原理:
-
客户端建立与服务器的连接:
- 客户端(如Web浏览器)根据用户输入或内部逻辑,生成一个HTTP请求。
- 请求包括一个URL,用于标识服务器资源的位置,以及使用的HTTP协议版本(如HTTP/1.1)。
- 客户端通过发送一个包含这些信息的请求来与服务器建立连接。这通常涉及DNS解析以获取服务器的IP地址,并通过TCP/IP协议建立可靠的连接。
-
服务器解析请求:
- 服务器接收到客户端的请求后,首先解析请求行。
- 获取请求的方法(如GET、POST等)、请求的资源路径以及HTTP协议的版本号。
-
服务器处理请求:
- 服务器根据请求的内容和服务器的配置进行请求处理。
- 这可能包括处理表单数据、查询数据库、生成动态内容等。
- 服务器在处理请求时,可能会根据需要使用其他资源或服务,并生成相应的响应。
-
服务器发送响应:
- 服务器根据请求的处理结果生成一个响应报文,并发送给客户端。
- 响应报文包括一个状态行,包含了响应的状态码(如200表示成功、404表示未找到资源等)以及响应的正文。
- 响应正文通常包含客户端请求的数据或结果,以及可能的附加信息(如内容类型、编码等)。
-
客户端接收响应:
- 客户端接收到服务器发送的响应后,首先解析响应报文。
- 获取响应的状态码和响应的正文。
-
客户端处理响应:
- 客户端根据响应的状态码和正文进行处理。
- 这可能包括展示响应的内容、解析HTML、执行JavaScript代码等。
- 如果响应包含重定向信息(如状态码302),则客户端可能会根据重定向信息发起新的请求。
-
连接关闭:
- 在HTTP/1.1协议中,连接可能是持久的(长连接)或短暂的(短连接)。
- 持久连接允许客户端和服务器在多个请求和响应之间保持连接打开状态,以减少建立和关闭连接的开销。
- 短暂连接则在每个请求和响应之后关闭连接。
- 客户端在完成所有的处理后,通常会关闭与服务器的连接(如果连接是短暂的或客户端不再需要该连接)。
5.响应reponse
HTTP/1.1 200 OK #响应行
Server: Apache-Coyote/1.1 #响应头(多个key-value键值对)
Content-Type: text/html;charset=utf-8 #响应内容的类型及编码
Content-Length: 62
Date: Sun, 15 Sep 2019 10:20:49 GMT
Set-Cookie: goods=xiaomi
Set-Cookie: goods_id=110 #一个空行
<html>html content</html> #响应体内容
6.Cookie和Session
为什么要用Cookie和Session?
Http协议本身是无状态的。客户端向服务器端发出请求,客户端和服务器端没有记录彼此过去的行为,每一次请求之间都是独立的。为了让服务器识别多次请求都是同一个客户端,则引入了cookie(jsessionid)+session技术。
Cookie
- Cookie 数据是键值对形式,由服务器产生,存放在客户的浏览器上,记录用户的偏好数据。
- Cookie 数据是由浏览器下次访问时,在后台自动发送给服务器。
- 单个Cookie在客户端的限制是3KB,且一个站点在客户端存放的所有Cookie也不能超过3KB。
Session
- Session是存在服务器的对象,由服务器为每个浏览器(客户端)创建。且通过唯一的sessionid
属性用于识别客户端。
2.Session封装的数据存储在服务器端。
3.Session有一个超时时间(默认30分钟),超过此时间还不发送请求,session对象则自动被销毁。
Cookie和Session的区别与联系
Cookie是客户端机制,Session服务器端机制。都是用于保存用户的临时数据,前者是保存在客户端上,后者保存在服务器上。客户端第一次发送请求时,服务器创建唯一的Session对象。该对象用于识别客户端且保存该用户数据(比如登录成功时的用户名),该Session对象有一个唯一的属性SessionId,且会响应给浏览器作为cookie来保存。当再次发送请求时,会携带SessionId给服务端,服务端通过SessionId匹配对应的session对象,用于识别是否为同一客户端的请求且判断当前客户端是否登录。Cookie是存储在客户端的键值对,SessionId作为cookie存在客户端(有效期到浏览器关闭)。
7.状态码
状态码是一个三位数的数字,用于表示服务器对请求的处理结果。它提供了关于请求状态的信息,包括请求是否成功、是否需要进一步的操作、是否有错误等等。
状态码的第一位数字定义了响应的类型:
- 1xx表示信息性状态码,表示请求正在处理。
- 2xx表示成功状态码,表示请求已成功完成。
- 3xx表示重定向状态码,表示需要进一步的操作才能完成请求。
- 4xx表示客户端错误状态码,表示客户端发送的请求有错误。
- 5xx表示服务器错误状态码,表示服务器在处理请求时发生了错误。
常见的状态码有:
- 200 OK,表示请求成功。
- 404 Not Found,表示请求的资源不存在。
- 500 Internal Server Error,表示服务器内部发生错误。