我已经看到在许多地方,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应用程序,城市传奇?
发布于 2016-01-08 16:31:42
只是为了澄清:您对任何子域的请求也被认为是跨源请求(例如。从www.example.com向api.example.com提出请求)。
实际上,对另一个源的简单<img> GET请求也是跨源请求,但是如果您只使用GET、HEAD、POST请求,并且内容类型标头是以下内容之一,则浏览器不会使用预置(选项)请求:
因此,对另一个原点的简单<img>请求不会有问题(不管是子域还是完全是另一个域),因为它不会经过预运行,除非它需要凭据,因为当您添加授权头时,请求需要经过预运行。
关于在本地存储还是在cookie中存储:本地存储具有单一来源策略,这意味着您不能访问从子域存储的数据,也就是说,example.com不能访问api.example.com的本地存储中的数据。另一方面,使用cookie,您可以定义哪些子域可以访问cookie。因此,您可以访问存储在cookie中的令牌,并将其与请求一起发送到服务器。Cookie也不允许跨不同域访问数据。
希望这能有所帮助。
https://stackoverflow.com/questions/34650198
复制相似问题