axios 无法添加请求响应的cookie

mwkjh3gx  于 2023-08-04  发布在  iOS
关注(0)|答案(1)|浏览(157)

我在前端使用React(我是react的新手),后端我使用express.js,并使用express-session进行身份验证(实际上尝试了jwt,但在服务器上设置token,如res.cookie(),它不起作用)。所以我想要的是当用户正确登录服务器设置一个cookie,然后如果你想得到你的用户数据,通过检查你的会话ID给予你的用户数据。我写了我的后端代码,并尝试从 Postman 和它的工作。但是当我在React尝试这样做的时候,它没有起作用。我尝试了很多东西使用axios,使用fetch request。当react post在客户端登录时,在响应头中显示我的Set Cookie和我的cookie:x1c 0d1x如果我知道正确,它设置了cookie,我们可以在请求头中看到它,但我的请求头没有:


我的应用程序> cookie页面是空的。但是当用户正确登录时,它正确地完成了工作并向我们显示用户名,但是当我们重定向他并想要获取用户数据时,它将cookie设置为默认值:

客户端代码:

const [data, setData] = useState({
        username: '',
        password: '',
    })
    const loginUser = async (e) => {
        e.preventDefault()
        const { username, password } = data
        try {

            fetch("http://localhost:3001/login", {
                credentials: 'same-origin',
                method: 'POST',
                headers: {
                  Accept: 'application/json',
                  'Content-Type': 'application/json'
                },
                body: JSON.stringify({username, password}),
              })
              .then(json => json.json())
              .then(response => console.log(response))

        } catch (error) {
            console.log(error)
        }

    }

字符串
那我该怎么办?

cczfrluj

cczfrluj1#

我认为你没有通过 * 证书:获取请求中的'same-origin'*。你需要使用像这样的获取请求来包含头中的cookie

fetch(loginUrl, {
  credentials: 'same-origin',
  method: 'POST',
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(this.state),
})

字符串
这可能对你有帮助。请让我知道问题是否解决。如果你分享你的代码,你是如何使用fetch来发出请求的,那会更好。

相关问题