【问题标题】:Is the cookie dependent on the browser?cookie 是否依赖于浏览器?
【发布时间】:2019-11-17 07:36:51
【问题描述】:

我对 cookie 有点困惑,我想知道我们能否在浏览器以外的其他地方使用 cookie,例如移动应用程序或桌面应用程序。 cookie是否依赖于浏览器?

【问题讨论】:

    标签: http web cookies https state-management


    【解决方案1】:

    任何 HTTP 客户端都可以使用 cookie。 cookie 只是服务器发送的 HTTP 标头,其值由客户端在后续请求中发送回服务器。请查阅您的 HTTP 客户端的文档,看看是否有内置的记忆 cookie 支持。

    【讨论】:

      【解决方案2】:

      不,cookie 不依赖于浏览器。

      Cookie 依赖于 HTTP“User-Agent”——代表用户的软件/库客户端,遵循 HTTP 协议。浏览器只是其中的一种。其他类型的“用户代理”包括:

      • 可以发送HTTP请求的CLI软件,如curlwget
      • 可以在项目中导入并发送 HTTP 请求的库。以 Node.js 项目为例,它们可以是 requestaxios。所有主要的编程语言都有自己的 HTTP 客户端库。
      • 自行实现的 HTTP 客户端逻辑代码。
      • 更多...

      在移动应用程序或桌面应用程序中,如果应用程序使用 HTTP,则很有可能使用 cookie。

      【讨论】:

        【解决方案3】:

        基于会话的身份验证

        在基于会话的身份验证中,服务器将在用户登录后为用户创建一个会话。会话 ID 然后存储在用户浏览器的 cookie 中。当用户保持登录状态时,cookie 将与每个后续请求一起发送。然后服务器可以将cookie中存储的会话ID与内存中存储的会话信息进行比较,以验证用户的身份并发送具有相应状态的响应!

        基于令牌的身份验证

        许多 Web 应用程序使用 JSON Web Token (JWT) 而不是会话进行身份验证。在基于令牌的应用程序中,服务器使用秘密创建 JWT 并将 JWT 发送到客户端。客户端存储 JWT(通常在本地存储中)并在每个请求的标头中包含 JWT。然后,服务器将使用来自客户端的每个请求验证 JWT 并发送响应。

        这里最大的区别是用户的状态不存储在服务器上,而是存储在客户端的令牌中。出于可扩展性和移动设备身份验证等原因,大多数现代 Web 应用程序都使用 JWT 进行身份验证。

        可扩展性

        基于会话的身份验证:由于会话存储在服务器的内存中,当有大量用户同时使用系统时,扩展成为一个问题。

        基于令牌的身份验证: 扩展没有问题,因为令牌存储在客户端。

        多设备

        基于会话的身份验证: Cookie 通常在单个域或子域上工作,如果它们在跨域工作(第三方 Cookie),它们通常会被浏览器禁用。当 API 从不同的域提供给移动和网络设备时,它会带来问题。

        基于令牌的身份验证:cookie 没有问题,因为 JWT 包含在请求标头中。

        基于令牌的身份验证:使用 JWT 是现代 Web 应用程序中更推荐的方法。 JWT 的一个缺点是 JWT 的大小与存储在 cookie 中的会话 id 相比要大得多,因为 JWT 包含更多的用户信息。必须注意确保 JWT 中只包含必要的信息,并且应省略敏感信息以防止 XSS 安全攻击。

        【讨论】:

          猜你喜欢
          • 2014-12-24
          • 1970-01-01
          • 1970-01-01
          • 2011-10-21
          • 2015-10-12
          • 1970-01-01
          • 1970-01-01
          • 2015-07-06
          • 2011-09-26
          相关资源
          最近更新 更多