通过 header 发送到服务器的 Cookie 令牌
Cookie token sending to server via header
这是我第一次尝试与服务器打交道
使用 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,而无需手动添加 header
我已经在服务器 let { cookies } = req;
中测试过它的工作
问题
哪个选项是正确的方法?
如果是 A 或 B - 为什么?为什么不呢?
考虑选项 B 依赖服务器处理 cookie。
在处理授权令牌等敏感数据时,必须选择选项B。
这是因为客户端脚本不应以任何方式访问敏感数据。
要防止客户端访问 cookie,请在对 res.cookie 的调用中使用 HttpOnly 标志。
客户端脚本无法访问 HttpOnly cookie。所以使用起来还是很安全的。
即使数据不敏感,您也应该选择选项 B。由于您的浏览器会自动发送 cookie 负载,因此您无需手动处理。
这是我第一次尝试与服务器打交道
使用 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,而无需手动添加 header
我已经在服务器 let { cookies } = req;
中测试过它的工作
问题
哪个选项是正确的方法?
如果是 A 或 B - 为什么?为什么不呢?
考虑选项 B 依赖服务器处理 cookie。
在处理授权令牌等敏感数据时,必须选择选项B。
这是因为客户端脚本不应以任何方式访问敏感数据。
要防止客户端访问 cookie,请在对 res.cookie 的调用中使用 HttpOnly 标志。
客户端脚本无法访问 HttpOnly cookie。所以使用起来还是很安全的。
即使数据不敏感,您也应该选择选项 B。由于您的浏览器会自动发送 cookie 负载,因此您无需手动处理。