首页 > 解决方案 > NextJS:Axios 在从 django 登录后将 JWT 令牌设置为 HttpOnly cookie 的经过身份验证的页面返回 401 错误

问题描述

我已将访问和刷新令牌设置为来自 Django 后端的 HttpOnly cookie。在 NextJS 前端,登录视图有效,它显示 HttpOnly cookie 存在于XHR选项卡中。因此,它也必须适用于任何其他经过身份验证的视图。但是当我从任何其他页面发出请求时,Axios它会返回:

Error: Request failed with status code 401

据我了解,Django 服务器将 httponly cookie 附加到请求中。因此,我对服务器的请求必须包含 cookie,但 cookie 是空的!

它可以很好地与 Postman 一起使用,但不能在浏览器中使用。

我的 NextJS 页面:

export default function profilePage() {
    return (
        <div className={styles.maincontainer}>
            <p>Hi</p>
        </div>
    );};

export async function getServerSideProps() {
    const url = 'http://127.0.0.1:8000/api/auth/profile/';
    const headers = {'Content-Type': 'application/json'};
    const resp = await axios.get(url, Headers=headers)
    const data = resp.json;
    console.log(data)
    return {}
};

在我的登录页面中,cookie 存在于XHR选项卡中: xhr 选项卡

但是,如果我从任何经过身份验证的页面发送请求,它仍然显示错误 401!怎么了?

标签: reactjsdjangocookiesnext.jscookie-httponly

解决方案


推荐阅读