Authentication 为什么在CORS/跨域场景中基于令牌的身份验证优于基于cookie的身份验证?

Authentication 为什么在CORS/跨域场景中基于令牌的身份验证优于基于cookie的身份验证?,authentication,cookies,cors,token,jwt,Authentication,Cookies,Cors,Token,Jwt,我已经看到,token-based authentication优于cookie-based authentication的好处之一是它更适合CORS/跨域场景 但是为什么呢 这是: 从提供的HTML页面生成 即使我的机器上有一个令牌,仅仅是标记怎么知道在哪里找到并发送它呢 根据,建议将JWT存储为cookie,那么它如何在CORS/跨域场景中生存 添加1 基于令牌的身份验证比会话cookie身份验证更容易扩展。请参阅此处的相关线程:仅作澄清:对您拥有的任何子域的请求也被视为跨源请求(例如,您从

我已经看到,
token-based authentication
优于
cookie-based authentication
的好处之一是它更适合CORS/跨域场景

但是为什么呢

这是:

从提供的HTML页面生成

即使我的机器上有一个令牌,仅仅是
标记怎么知道在哪里找到并发送它呢

根据,建议将JWT存储为cookie,那么它如何在CORS/跨域场景中生存

添加1


基于令牌的身份验证比会话cookie身份验证更容易扩展。请参阅此处的相关线程:

仅作澄清:对您拥有的任何子域的请求也被视为跨源请求(例如,您从www.example.com向api.example.com发出请求)

一个简单的
到另一个源站的GET请求实际上也是跨源站请求,但是如果您仅使用GET、HEAD、POST请求,浏览器不使用预引导(选项)请求,并且您的内容类型头是以下之一:

  • 应用程序/x-www-form-urlencoded
  • 多部分/表单数据
  • 文本/纯文本
因此,对另一个来源的简单
请求不会有问题(无论是子域还是完全另一个域),因为它不会通过预飞,除非它需要凭据,因为当您添加授权标头时,请求需要通过预飞

关于在localstorage中存储与在cookie中存储:localstorage具有单源策略,这意味着您无法访问从子域存储的数据,即example.com无法访问api.example.com的localstorage中的数据。另一方面,使用cookie,您可以定义哪些子域可以访问cookie。所以,您可以访问存储在cookie中的令牌,并将其与您的请求一起发送到服务器。Cookie也不允许跨不同域访问数据

希望这有帮助