重写cookie和session部分内容

This commit is contained in:
many2many 2024-09-13 16:03:58 +08:00
parent 13cb88f713
commit bfcab313ee
3 changed files with 65 additions and 13 deletions

View File

@ -17,6 +17,7 @@
- URN = Uniform Resource Name 统一资源名称
> 指的是资源而不指定其位置或是否存在. URN 的一个最好的例子是 ISBN 号它被用来唯一地识别一本书。URN 与 URL 完全不同,因为它不包含任何协议。
三者的关系图示:
![](./resources/uri-url-urn.png)
---
@ -58,16 +59,23 @@ URL示例分析
动态页面交互过程:
![](./resources/web_application_with_html_and_steps.png)
#### 2.1.3 HTTP请求与响应包结构
#### 2.1.3 HTTP请求包结构
[HTTP 消息结构](https://www.runoob.com/http/http-messages.html)
#### 2.1.4 HTTP方法
![](./resources/imgs/http-request-struct.png)
#### 2.1.4 HTTP请求方法
[HTTP 请求方法](https://www.runoob.com/http/http-methods.html)
#### 2.1.5 HTTP状态码
#### 2.1.5 HTTP请求头
[HTTP Request Header 请求头](https://stackoverflow.org.cn/httpheader/)
#### 2.1.6 HTTP响应包结构
![](./resources/imgs/http-response-struct.png)
#### 2.1.7 HTTP状态码
- **2xx 成功:** 请求已成功被服务器接收、理解,并接受。
- **200 OK** 请求已成功,请求所希望的响应头或数据体将随此响应返回。
- **3xx 重定向:** 需要客户端采取进一步的操作才能完成请求。
@ -81,15 +89,59 @@ URL示例分析
- **5xx 服务器错误:** 服务器在处理请求的过程中发生了错误。
- **500 Internal Server Error** 服务器遇到某种不可预知的情况。
- **503 Service Unavailable** 由于临时的服务器维护或者过载,服务器当前无法处理请求。
#### 2.1.8 HTTP请求头
[HTTP Response Header 响应头](https://stackoverflow.org.cn/httpheader/)
#### 2.1.6 Cookie和Session
- **Cookie**
- 存储在客户端的小型文本文件,用于跟踪用户状态。
- 可以设置有效期、路径、域名、安全标志等属性。
- **Session**
- 服务器端用来跟踪用户状态的一种机制。
- Session 通常使用Cookie来传递Session ID。
- 服务器通过Session ID来查找与特定用户相关的数据。
#### 2.1.9 Cookie
参考阅读: [HTTP Cookie](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies)
HTTP 是无状态协议,说明它不能以状态来区分和管理请求和响应。也就是说,无法根据之前的状态进行本次的请求处理。
而在实际应用中我们又希望能够保持用户的状态为解决这个问题Cookie诞生了在保留无状态协议这个特征的同时又要解决类似记录状态的矛盾问题。
HTTP Cookie也叫 Web Cookie 或浏览器 Cookie是服务器发送到用户浏览器并保存在本地的一小块数据。浏览器会存储 cookie 并在下次向同一服务器再发起请求时携带并发送到服务器上。通常它用于告知服务端两个请求是否来自同一浏览器——如保持用户的登录状态。Cookie 使基于无状态的 HTTP 协议记录稳定的状态信息成为了可能。
Cookie 主要用于以下三个方面:
- 会话状态管理
> 如用户登录状态、购物车、游戏分数或其他需要记录的信息
- 个性化设置
> 如用户自定义设置、主题和其他设置
- 浏览器行为跟踪
> 如跟踪分析用户行为等
**创建 Cookie**
服务器收到 HTTP 请求后,服务器可以在响应标头里面添加一个或多个 Set-Cookie 选项。浏览器收到响应后通常会保存下 Cookie并将其放在 HTTP Cookie 标头内,向同一服务器发出请求时一起发送。你可以指定一个过期日期或者时间段之后,不能发送 cookie。你也可以对指定的域和路径设置额外的限制以限制 cookie 发送的位置。关于下面提到的头部属性的详细信息,请参考 Set-Cookie 文章。
服务器使用 Set-Cookie 响应头部向用户代理(一般是浏览器)发送 Cookie 信息。这指示服务器发送标头告知客户端存储一对 cookie
```http
HTTP/1.0 200 OK
Content-type: text/html
Set-Cookie: yummy_cookie=choco
Set-Cookie: tasty_cookie=strawberry
```
现在,对该服务器发起的每一次新请求,浏览器都会将之前保存的 Cookie 信息通过 Cookie 请求头部再发送给服务器。
```http
GET /sample_page.html HTTP/1.1
Host: www.example.org
Cookie: yummy_cookie=choco; tasty_cookie=strawberry
```
#### 2.1.10 Session
Session表示会话,服务器端用来跟踪用户状态的一种机制。在java web中session是一个存储在WEB服务器端的java对象该对象代表用户和WEB服务器的一次会话。
> 那什么才叫一次会话呢?
>> 一般多数情况下,是这样描述的:用户打开浏览器,在浏览器上进行一些操作,然后将浏览器关闭,表示一次会话结束。
>>
>> 本质上的描述从session对象的创建到最终session对象超时之后销毁这个才是真正意义的一次完整会话。
**Session的工作原理与限制**
- 服务器端用来跟踪用户状态的一种机制。
- Session 通常使用Cookie来传递Session ID。
- 服务器通过Session ID来查找与特定用户相关的数据。
- session的使用要求用户浏览器必须支持cookie如果浏览器不支持使用cookie或者设置为禁用cookie那么将不能使用session。
### 2.2 HTML/CSS/JavaScript基础

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB