标签:请求 后端 前端 ajax cookie 跨域 有效期
1.前端写cookie
前端写cookie对前端理解整个项目的逻辑来说有很大的帮助,也更符合惯性思维,我想要获取用户的信息,那么就把用户的id提供给你。
优势:前端逻辑清晰,容易理解
缺点:不安全,cookie可能被篡改
2.后端写cookie
后端写cookie对前端来说就是个黑盒子,我只要向后端发送申请,就可以拿到当前用户的信息,尽管我不知道用户的id。操作简单,理解起来不太友好。
- 优势:操作简单,安全性高
- 缺点:好像没啥缺点
3.两边都写cookie
这应该就是2B程序猿的典型做法了。很不凑巧,刚做的一个项目就是这个干的,还因此引出了很多bug,挂出这种写法的流程图,梳理一下bug产生的原因。
从图中可以看到,这种实现方法实际上是存在问题的。前后端同时写了cookie,前端的cookie有效期是在设置cookie时设定的,后端cookie的有效期是通过session来限定的。如果两个有效期是相同的,那么可能看不到什么问题。但如果两次写cookie的有效期是不相同的,而且前端过期的时间晚于后端过期的时间,那么就会出现一个bug
4.浏览器是否会自动携带cookie
这个问题与你发起ajax请求的方式有关(大多数情况下是不会自动携带的)
fetch在默认情况下, 不管是同域还是跨域ajax请求都不会带上cookie, 只有当设置了 credentials
时才会带上该ajax请求所在域的cookie, 服务端需要设置响应头 Access-Control-Allow-Credentials: true
, 否则浏览器会因为安全限制而报错, 拿不到响应
axios和jQuery在同域ajax请求时会带上cookie, 跨域请求不会, 跨域请求需要设置 withCredentials
axios设置withCredentials
:
标签:请求,后端,前端,ajax,cookie,跨域,有效期 来源: https://blog.csdn.net/sally18/article/details/119420414
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。