您的位置:首页 > 教育 > 培训 > 动态网站和静态网站_做网站推广销售产品_自己怎么给网站做优化排名_推广模式包括哪些模式

动态网站和静态网站_做网站推广销售产品_自己怎么给网站做优化排名_推广模式包括哪些模式

2025/2/24 21:34:14 来源:https://blog.csdn.net/qq_41768644/article/details/145641677  浏览:    关键词:动态网站和静态网站_做网站推广销售产品_自己怎么给网站做优化排名_推广模式包括哪些模式
动态网站和静态网站_做网站推广销售产品_自己怎么给网站做优化排名_推广模式包括哪些模式

一、Cookie与Set-Cookie

1. Cookie

  • 定义: Cookie 是客户端(通常是浏览器)存储的一小段数据,由服务器通过 Set-Cookie 响应头设置,并在后续请求中通过 Cookie 请求头发送回服务器。
  • 作用: 用于在客户端保存状态信息,例如用户登录状态、偏好设置等。
  • 使用场景:
      客户端在每次请求时,自动将 Cookie 附加到请求头中,发送给服务器。
      服务器通过读取 Cookie 来识别用户或恢复会话状态。
  • 示例
GET /example HTTP/1.1
Host: www.example.com
Cookie: name=value; sessionid=12345

客户端将存储的 Cookie 发送给服务器

2、Set-Cookie

  • 定义: Set-Cookie 是服务器在 HTTP 响应中发送的响应头,用于在客户端设置或更新 Cookie。
  • 作用: 服务器通过 Set-Cookie 向客户端发送数据,要求客户端保存这些数据并在后续请求中回传。
  • 使用场景:
      服务器需要在客户端存储数据时(如用户登录成功后的会话 ID)。
      服务器可以设置 Cookie 的属性,如过期时间、作用域、安全性等。
  • 示例
HTTP/1.1 200 OK
Set-Cookie: sessionid=12345; Path=/; Expires=Wed, 09 Jun 2023 10:18:14 GMT; Secure; HttpOnly

服务器通过 Set-Cookie 设置一个名为 sessionid 的 Cookie,并指定了路径、过期时间、安全性和 HTTP-only 属性

3、主要区别

特性CookieSet-Cookie
类型请求头响应头
作用客户端将存储的 Cookie 发送给服务器服务器要求客户端设置或更新 Cookie
使用场景客户端发起请求时服务器返回响应时
数据流向客户端 → 服务器服务器 → 客户端
示例Cookie: name=value; sessionid=12345Set-Cookie: sessionid=12345; Path=/

4、Set-Cookie 的属性

Set-Cookie 可以设置多个属性来控制 Cookie 的行为:

  • Name=Value: Cookie 的名称和值。
  • Expires: Cookie 的过期时间(GMT 格式)。
       示例: Expires=Wed, 09 Jun 2023 10:18:14 GMT
  • Max-Age: Cookie 的最大存活时间(秒)。
       示例: Max-Age=3600(1 小时后过期)
  • Domain: Cookie 的作用域(指定域名)。
      示例: Domain=example.com
  • Path: Cookie 的作用路径。
      示例: Path=/(根路径下有效)
  • Secure: 仅在使用 HTTPS 时发送 Cookie。
      示例: Secure
  • HttpOnly: 禁止 JavaScript 访问 Cookie,防止 XSS 攻击。
      示例: HttpOnly
  • SameSite: 控制 Cookie 是否在跨站请求时发送。
      示例: SameSite=Strict(严格模式,禁止跨站发送)

5、工作流程

在客户端(如浏览器)第一次向服务器发送请求时,客户端是没有 Cookie 的。Cookie 的生成和传递过程是一个逐步建立的过程,以下是详细的解释:

  • 1.、第一次请求(无 Cookie)
    当客户端第一次访问某个网站时,浏览器会向服务器发送一个 HTTP 请求。由于是第一次访问,客户端还没有存储任何与该网站相关的 Cookie,因此请求头中不会包含 Cookie 字段。

示例

GET /index.html HTTP/1.1
Host: www.example.com
  • 2、服务器响应并设置 Cookie
    服务器接收到请求后,会根据业务逻辑决定是否需要设置 Cookie(例如,生成一个会话 ID 或其他标识)。服务器通过 Set-Cookie 响应头将 Cookie 发送给客户端。

示例

HTTP/1.1 200 OK
Set-Cookie: sessionid=12345; Path=/; HttpOnly
  • 3、客户端存储 Cookie
    客户端(浏览器)接收到服务器的响应后,会解析 Set-Cookie 头,并将 Cookie 存储在本地。
    存储的 Cookie 通常包括以下信息:
       Cookie 的名称和值(如 sessionid=12345)。
       作用域(如 Domain 和 Path)。
       过期时间(如 Expires 或 Max-Age)。
       其他属性(如 Secure、HttpOnly、SameSite)。
  • 4、后续请求(携带 Cookie)
    在客户端存储了 Cookie 后,后续对同一服务器的请求会自动将 Cookie 附加到请求头中。

示例

GET /dashboard HTTP/1.1
Host: www.example.com
Cookie: sessionid=12345

6、 Cookie 的初始来源

  • 第一次请求时没有 Cookie:客户端第一次访问服务器时,请求头中没有 Cookie 字段。
  • Cookie 是由服务器生成的:服务器通过 Set-Cookie 响应头将 Cookie 发送给客户端。
  • 客户端存储并回传 Cookie:客户端在后续请求中自动将存储的 Cookie 发送给服务器。

7、实际应用场景

  • 会话管理:
      服务器在用户登录成功后生成一个会话 ID,并通过 Set-Cookie 发送给客户端。
      客户端在后续请求中携带该会话 ID,服务器通过验证会话 ID 来识别用户。
  • 个性化设置:
      服务器可以通过 Cookie 存储用户的偏好设置(如语言、主题等)。
  • 跟踪用户行为:
      服务器可以通过 Cookie 记录用户的访问行为,用于分析或广告投放。

二、seesion详解

1、 基本概念

  • Cookie:
    是客户端(通常是浏览器)存储的一小段数据。
    由服务器通过 Set-Cookie 响应头发送给客户端。
    客户端在后续请求中自动将 Cookie 附加到请求头中发送给服务器。
    数据存储在客户端。
  • Session:
    是服务器端存储的用户状态信息。
    服务器为每个用户创建一个唯一的会话 ID,并将该 ID 通过 Cookie 或 URL 重写的方式发送给客户端。
    客户端在后续请求中发送会话 ID,服务器根据该 ID 查找对应的会话数据。
    数据存储在服务器端。

2、存储位置

  • Cookie:
    数据存储在客户端(浏览器)中。
    可以是内存 Cookie(浏览器关闭后失效)或持久化 Cookie(根据过期时间存储在硬盘中)。
  • Session:
    数据存储在服务器端(如内存、数据库或文件系统)。
    客户端只存储会话 ID(通常通过 Cookie 存储)。

3、数据安全性

  • Cookie:
    数据存储在客户端,可能被篡改或窃取。
    可以通过设置 Secure(仅 HTTPS 传输)、HttpOnly(禁止 JavaScript 访问)等属性提高安全性。
  • Session:
    数据存储在服务器端,客户端只存储会话 ID,相对更安全。
    会话 ID 仍需通过 Cookie 或 URL 传递,可能被窃取(如通过 XSS 攻击)。

4、数据大小限制

  • Cookie:
    单个 Cookie 大小通常限制为 4KB。
    每个域名下的 Cookie 数量和总大小也有限制(通常为 50 个 Cookie,总大小不超过 4KB)。
  • Session:
    数据存储在服务器端,没有严格的大小限制。
    但存储过多数据可能影响服务器性能。

5、生命周期

  • Cookie:
    可以设置过期时间(Expires 或 Max-Age),可以是会话级(浏览器关闭后失效)或持久化(长期有效)。
    客户端可以手动清除 Cookie。
  • Session:
    生命周期由服务器控制,通常在一定时间内无活动后失效(如 30 分钟)。
    服务器可以主动销毁 Session。

6、使用场景

  • Cookie:
    适合存储少量不敏感的数据,如用户偏好设置、跟踪信息等。
    适合跨页面或跨会话的状态管理。
  • Session:
    适合存储敏感数据,如用户登录状态、购物车信息等。
    适合短期状态管理(如一次会话期间)。

7、实现方式

  • Cookie:
    服务器通过 Set-Cookie 响应头设置 Cookie。
    客户端自动管理 Cookie 的存储和发送。
  • Session:
    服务器创建会话并生成唯一的会话 ID。
    会话 ID 通过 Cookie 或 URL 重写发送给客户端。
    客户端在后续请求中发送会话 ID,服务器根据 ID 查找对应的会话数据。

8、 性能影响

  • Cookie:
    每次请求都会携带 Cookie,可能增加请求头的大小。
    数据存储在客户端,对服务器性能无直接影响。
  • Session:
    数据存储在服务器端,可能占用服务器内存或存储资源。
    需要根据会话 ID 查找数据,可能增加服务器负载。

9、示例对比

  • Cookie 示例

1、服务器设置 Cookie:

HTTP/1.1 200 OK
Set-Cookie: username=john; Path=/; Expires=Wed, 09 Jun 2023 10:18:14 GMT

2、客户端发送 Cookie:

GET /dashboard HTTP/1.1
Host: www.example.com
Cookie: username=john
  • Session 示例

1、服务器创建 Session 并发送会话 ID:

HTTP/1.1 200 OK
Set-Cookie: sessionid=12345; Path=/; HttpOnly

2、客户端发送会话 ID:

GET /dashboard HTTP/1.1
Host: www.example.com
Cookie: sessionid=12345

服务器根据会话 ID 查找 Session 数据:
会话数据:{ sessionid: 12345, username: “john”, loggedIn: true }

10、总结对比表

特性CookieSession
存储位置客户端服务器端
数据安全性较低(数据存储在客户端)较高(数据存储在服务器端)
数据大小限制有(通常 4KB)无严格限制
生命周期可设置过期时间由服务器控制
使用场景存储少量不敏感数据存储敏感数据
实现方式通过 Set-Cookie 设置通过会话 ID 管理
性能影响增加请求头大小占用服务器资源

11.、如何选择?

  • 如果需要存储少量不敏感的数据,并且希望数据在客户端长期保存,使用 Cookie。
  • 如果需要存储敏感数据或大量数据,并且希望数据在服务器端管理,使用 Session。

在实际开发中,Cookie 和 Session 通常会结合使用。例如,使用 Cookie 存储会话 ID,而将实际数据存储在 Session 中。
理论上,只用 Cookie 是可以实现状态管理的,但在实际应用中,Session 的引入是为了解决 Cookie 的一些局限性,尤其是在安全性、数据存储和性能方面。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com