今天朋友问我一个他们公司的代码问题, 页面有很多数据, 分 5 次异步加载, 每次加载设置参数是这样的:
document.cookie="type="+type;
$.ajax({
headers:{"Cookie":document.cookie},
success: ...
...
})
然后说以前一直没问题, 直到今天浏览器升级了发现问题, 5 次加载有时顺序会有问题, 有一个没加载, 有一个加载了 2 次
我一看说你这个异步明显有线程问题啊, 有可能其中一个加载在异步的时候参数被其他的加载覆盖了, 为什么不用 data 参数呢, 他说他们的架构就是这样的
因为他们是大厂, 我现在略微有点迷茫, 这样做难道有什么特别的意义好处吗? 我强行想了一个好处, 用了 Cookie 传参数, 就可以隐藏 URL 参数, 后台也可以动态读参数, 不用定义一大堆的参数对象.
但是坏处就是没有强类型检查了.
有经验的大佬也来说说想法呗.
1
yusen01 2019-09-26 15:59:25 +08:00
没见过这种用法。同时发多个请求的话,cookie 相当于是共享变量,存在竞争问题,可能返回的数据是错误的。正常参数要么放 URL 里,要么放 body 里。
|
2
yusen01 2019-09-26 16:01:22 +08:00
Cookie 里一般放 token,session id 这种不变的内容。
|
3
yesterdaysun OP 从朋友那里听到一个新的说法,说是上面 review 代码,如果请求直接带参数有安全问题,所以需要用 cookie 传参数。
是这样吗? |
4
zhihaofans 2019-09-26 19:11:34 +08:00 via Android
@yesterdaysun 你就不怕重复或者漏吗
|
5
yiwayhb 2019-09-26 19:12:40 +08:00 via Android
@yesterdaysun 简直是瞎扯
说说是那个大厂,大家回避下 |
6
wysnylc 2019-09-27 10:52:50 +08:00
神特么安全问题哈哈哈哈哈哈
|