Cookie是否取决于浏览器?

时间:2019-07-07 16:07:45

标签: http web cookies https state-management

我对Cookie感到有些困惑,我想知道我们是否可以在浏览器以外的其他地方使用Cookie,例如移动应用或台式机应用。 Cookie是否取决于浏览器?

3 个答案:

答案 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)

不,Cookie不依赖于浏览器。

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

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

在移动应用程序或台式机应用程序中,如果将HTTP用于应用程序,则很有可能使用cookie。