一什么叫Cookie跨域限制浏览器具有同源策略的安全机制是用来防止恶意网站窃取你的登录信息。判断同源协议域名端口三要素必须相同有一个不一样就是跨域。例如某网站前端页面地址为http://127.0.0.1:3000后端接口地址为http://127.0.0.1:8080协议域名一样但是端口号不同这就属于跨域场景大多数前后端分离项目都是这种情况。二cookie特性浏览器自动携带但是会受同源管控1Cookie 是浏览器专属存储绑定域名2当你访问A域名页面页面再发起请求调用B域名接口如果同源浏览器自动在请求头中带上当前域名的所有Cookie如果跨域浏览器默认禁止自动携带Cookie,不会把前端域名的Cookie传给后端服务Cookie跨域限制Cookie要么自己设置要么创建Session的时候自动返回一个Cookie三结合Session就可以看出来跨域限制的局限性传统的登录流程Session机制完全依赖Cookie1用户登录后端生成SessionID绑定域名的Cookie存储在浏览器本地。2后续如果是同域请求浏览器自动携带Cookie后端拿到SessionID查到你的登录会话3一旦跨域浏览器拒接携带Cookie导致请求中没有没有SessionID后端识别不了用户判定未登录。四JWT为什么没有这方面限制?Cookie是浏览器自动管控自动携带被同源策略限制。而JWT不存cookie,主流存在LocalStorage/sessionStorage,由前段代码写请求头把JWT字符串添加进去前端代码每次发送请求手动塞进Header不管是否跨域这段字符串都会被送到后端浏览器不会拦截。五浏览器本地存储分类1Cookie2LocalStorage3sessionStorage区别Cookie 特殊规则自带跨域缺陷绑定域名、端口 A 网站3000 端口写的 Cookie默认只有访问 3000 同域接口时浏览器才会自动带上跨域接口浏览器直接不自动携带。浏览器自动传输 不用你写 JS 代码追加每次请求浏览器自动把对应域名 Cookie 塞进请求头。同源策略为了安全直接限制跨域自动发送 Cookie。容量小每次请求都会跟着发增加流量开销。localStorage存 JWT 主流方案仅页面 JS 读写不会自动随请求发送存在浏览器但浏览器不会主动把 localStorage 里的数据发给后端接口。无域名传输绑定限制前端 JS 想读就读手动把里面的 JWT 放到自定义请求头无论请求哪个跨域后端地址数据都会完整传过去浏览器不会拦截。容量更大不会每次请求自动携带SessionStorage与LocalStorage类似二者都不受cookie跨域限制区别LocalStorage永久保存关闭浏览器重启电脑数据还在除非手动清空SessionStorage仅当前标签页有效关闭当前网页标签数据直接清空。​​​​​​​