Axios - 密码暴露在 res.config

问题描述

我正在向我的服务器发出 axios post 请求以登录用户并在控制台中记录响应以观察返回的数据:

const Login = () => {
  const [email,setEmail] = useState("");
  const [password,setPassword] = useState("");

  const submitForm = (e) => {
    e.preventDefault();

    axios
      .post("http://127.0.0.1:3000/login",{ email,password })
      .then((res) => console.log("res",res))
      .catch((err) => console.log("err",err));

    console.log({ email,password });
  };

用户成功登录时,我会生成一个令牌,将用户的数据与这个新生成的令牌一起返回。正如您在此处看到的,我正在从响应正文中删除用户密码,以免暴露密码:

const generatetoken = (user) => {
  delete user.password;

  const token = jwt.sign(user,config.appKey,{ expiresIn: 86400 });

  return { ...user,...{ token } };
};

这是控制台中记录的数据。在图 1 中,您可以看到响应的数据部分中没有密码。

enter image description here

然而,在响应的配置部分,密码被暴露(参见图 2)。我的问题是,这是值得关注的事情吗?如果是这样,我如何从响应中完全删除用户的密码?

enter image description here

提前致谢!

解决方法

如果您的连接是安全的(基于 TLS 的 HTTP,...),则无需担心。

HTTP 响应不包括它,因为实际的响应负载是 res.data

它存储在 axios response object 中,因为 res.config 是为请求提供给 axios 的配置。但它没有存储在任何持久存储中。