这是我第一次尝试处理服务器
使用react和express
将令牌从服务器保存到浏览器cookie
//After login request
res.cookie('token', token, {maxAge: 3600000} ).json({ user: userDoc, message: 'message!', status: 200 });
问题就在这里
如何从客户端发送令牌值以及每个api请求,以便进一步应用程序处理?
经过研究,我找到了两个选择!。
方案a
//Collecting data from cookie
let token = Cookies.get('token');
axios.get("/api/, { headers: {"Authorization" : `Bearer ${token}`} });
方案b
这是我读到的困惑,浏览器会自动发送cookie和每个api,而无需手动添加标头
我在服务器上进行了测试 let { cookies } = req;
及其工作原理
问题
哪个选项是正确的方法?
如果是a或b-为什么?为什么不呢?
1条答案
按热度按时间p1iqtdky1#
考虑到选项b依赖于服务器来处理cookie。
处理敏感数据(如授权令牌)时,必须选择选项b。
这是因为客户端脚本不应通过任何方式访问敏感数据。
要阻止客户端访问cookie,请在对res.cookie的调用中使用httponly标志。
客户端脚本无法访问httponly Cookie。所以使用起来很安全。
即使数据不敏感,也应该使用选项b。由于浏览器会自动发送cookie负载,因此您不必手动处理。