我可以在 PostMan 上执行以下操作
1)POST方法登录公司服务器。
2) 以登录用户的身份在公司服务器上发出其他请求。
我创建了一个nodejs应用程序来与公司服务器进行通信。
我正在使用 axios 库进行上述通信。
登录公司服务器后,任何其他调用都无法将我识别为授权用户。
我可以在 axios 上重新创建以保持会话持久性的差异是什么?
在您使用的浏览器中withCredentials
在 axios 中 - 此选项会自动保存请求之间的会话。但在node.js中这个参数不起作用,因为axios使用http node.js模块而不是XHR。
在node.js中,您可以使用axios实例在请求之间保存cookie。
最简单的方法是:
创建实例
const BASE_URL = "https://stackoverflow.com";
// Create instance of axios which utilizes BASE_URL
const axiosInstance = axios.create({ baseURL: BASE_URL });
编写createSession函数
const createSession = async () => {
console.log("create session");
const authParams = {
username: "username",
password: "password"
};
const resp = await axios.post(BASE_URL, authParams);
const cookie = resp.headers["set-cookie"][0]; // get cookie from request
axiosInstance.defaults.headers.Cookie = cookie; // attach cookie to axiosInstance for future requests
};
并使用会话 cookie 进行调用
// send Post request to https://stackoverflow.com/protected after created session
createSession().then(() => {
axiosInstance.post('/protected') // with new cookie
})
请注意,您的授权方法可能与所提供的不同 - 在这种情况下,您只需更改createSession
方法。如果您的会话已过期,您可以直接重新登录或使用 axios.interceptors - 我附上了要点链接。
您也可以使用cookie-jar
与 axios(下面的链接)
欲了解更多信息:
- https://github.com/axios/axios#creating-an-instance
- https://github.com/axios/axios#interceptors
- https://gist.github.com/nzvtrk/ebf494441e36200312faf82ce89de9f2
- https://github.com/3846masa/axios-cookiejar-support
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)