用 Cookie 传递普通的请求参数是正常做法吗?

2019-09-26 15:48:56 +08:00
 yesterdaysun

今天朋友问我一个他们公司的代码问题, 页面有很多数据, 分 5 次异步加载, 每次加载设置参数是这样的:

document.cookie="type="+type;
$.ajax({
    headers:{"Cookie":document.cookie},
    success: ...
    ...
})

然后说以前一直没问题, 直到今天浏览器升级了发现问题, 5 次加载有时顺序会有问题, 有一个没加载, 有一个加载了 2 次

我一看说你这个异步明显有线程问题啊, 有可能其中一个加载在异步的时候参数被其他的加载覆盖了, 为什么不用 data 参数呢, 他说他们的架构就是这样的

因为他们是大厂, 我现在略微有点迷茫, 这样做难道有什么特别的意义好处吗? 我强行想了一个好处, 用了 Cookie 传参数, 就可以隐藏 URL 参数, 后台也可以动态读参数, 不用定义一大堆的参数对象.

但是坏处就是没有强类型检查了.

有经验的大佬也来说说想法呗.

1129 次点击
所在节点    问与答
6 条回复
yusen01
2019-09-26 15:59:25 +08:00
没见过这种用法。同时发多个请求的话,cookie 相当于是共享变量,存在竞争问题,可能返回的数据是错误的。正常参数要么放 URL 里,要么放 body 里。
yusen01
2019-09-26 16:01:22 +08:00
Cookie 里一般放 token,session id 这种不变的内容。
yesterdaysun
2019-09-26 19:08:45 +08:00
从朋友那里听到一个新的说法,说是上面 review 代码,如果请求直接带参数有安全问题,所以需要用 cookie 传参数。

是这样吗?
zhihaofans
2019-09-26 19:11:34 +08:00
@yesterdaysun 你就不怕重复或者漏吗
yiwayhb
2019-09-26 19:12:40 +08:00
@yesterdaysun 简直是瞎扯
说说是那个大厂,大家回避下
wysnylc
2019-09-27 10:52:50 +08:00
神特么安全问题哈哈哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/604450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX