首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在CORS/跨域场景中,基于令牌的身份验证要优于基于cookie的身份验证?

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

Stack Overflow用户
提问于 2016-01-07 08:14:55
回答 1查看 601关注 0票数 3

我已经看到在许多地方token-based authentication优于cookie-based authentication的好处之一是它是CORS/跨域场景的更好的套件。

但是为什么呢?

这是CORS方案

来自http://domain-a.com的HTML页面为http://domain-b.com/image.jpg发出<img> src请求。

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

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

添加1

基于令牌的身份验证比会话cookie身份验证更容易扩展。请参阅此处的相关线程:无状态的web应用程序,城市传奇?

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 16:31:42

只是为了澄清:您对任何子域的请求也被认为是跨源请求(例如。从www.example.com向api.example.com提出请求)。

实际上,对另一个源的简单<img> GET请求也是跨源请求,但是如果您只使用GET、HEAD、POST请求,并且内容类型标头是以下内容之一,则浏览器不会使用预置(选项)请求:

  • 应用程序/x-www-表单-urlencoded
  • 多部分/表格-数据
  • 文本/纯文本

因此,对另一个原点的简单<img>请求不会有问题(不管是子域还是完全是另一个域),因为它不会经过预运行,除非它需要凭据,因为当您添加授权头时,请求需要经过预运行。

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

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34650198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档