我对Cookie感到有些困惑,我想知道我们是否可以在浏览器以外的其他地方使用Cookie,例如移动应用或台式机应用。 Cookie是否取决于浏览器?
答案 0 :(得分:1)
任何HTTP客户端都可以使用cookie。 Cookie只是服务器发送的HTTP标头,其值由客户端在后续请求中发送回服务器。请查阅HTTP客户端的文档,以了解是否内置了用于记住cookie的支持。
答案 1 :(得分:1)
基于会话的身份验证
在基于会话的身份验证中,服务器将在用户登录后为该用户创建一个会话。然后,会话ID将存储在用户浏览器的Cookie中。当用户保持登录状态时,Cookie将与每个后续请求一起发送。然后,服务器可以将Cookie中存储的会话ID与内存中存储的会话信息进行比较,以验证用户的身份并发送具有相应状态的响应!
基于令牌的身份验证
许多Web应用程序使用JSON Web令牌(JWT)代替用于身份验证的会话。在基于令牌的应用程序中,服务器使用机密创建JWT,并将JWT发送给客户端。客户端存储JWT(通常在本地存储中),并在每个请求的标头中都包含JWT。然后,服务器将使用来自客户端的每个请求来验证JWT并发送响应。
最大的区别是用户状态没有存储在服务器上,因为状态存储在客户端的令牌内。大多数现代Web应用程序都使用JWT进行身份验证,原因包括可伸缩性和移动设备身份验证。
可扩展性
基于会话的身份验证::由于会话存储在服务器的内存中,因此当大量用户一次使用系统时,扩展成为一个问题。
基于令牌的身份验证:由于令牌存储在客户端,因此扩展没有问题。
多个设备
基于会话的身份验证: Cookie通常在单个域或子域上工作,并且如果它们跨域工作(第3方Cookie),通常会被浏览器禁用。当API从不同的域提供给移动设备和Web设备时,就会带来问题。
基于令牌的身份验证:由于JWT包含在请求标头中,因此cookie没有问题。
基于令牌的身份验证:是现代Web应用程序中更推荐的方法。 JWT的一个缺点是与存储在cookie中的会话ID相比,JWT的大小要大得多,因为JWT包含更多的用户信息。必须注意确保JWT中仅包含必要的信息,并应省略敏感信息以防止XSS安全攻击。
答案 2 :(得分:0)