繁体   English   中英

无法在 axios 响应中设置 cookie

[英]Cannot Set cookie in axios response

我正在使用 Nuxt.js 开发网站,我想调用 API 并将结果放入服务器端的 cookie

我将在 Nuxt.js 中间件中完成这一部分。 但是我可以调用 API,我可以设置 cookie,但我不能使用 API 响应设置 cookie。

调用API

import axios from 'axios'

export default ({ res, store }) => {
  if (process.server) {
    axios.get(process.env.tokenAPI)
      .then((response) => {
        const token = response.data.token
        // console.log(token) and the server console will log the result
      })
  }
}

设置饼干

export default ({ res, store }) => {
    res.setHeader('Set-Cookie', [`token=123456`]) // It works!!

}

结合它们

import axios from 'axios'

export default ({ res, store }) => {
  if (process.server) {
    axios.get(process.env.token)
      .then((response) => {
        const token = response.data.token
        res.setHeader('Set-Cookie', [`token=${token}`]) 
      })
  }
}

当我使用这段代码时没有设置 cookie,它应该从结果中设置 cookie

你能试试这个吗:

import axios from 'axios'
export default ({ res, store }) => {
  if (process.server) {
    axios.get(process.env.token)
      .then((response) => {
        document.cookie = "token="+response.data.token+"; expires=Thu, 18 Dec 2019 12:00:00 UTC; path=/";
      })
  }
}

这是因为中间件必须等待发送响应,直到您设置标头。

import axios from 'axios'

export default async ({ res, store }) => {
  if (process.server) {
    const response = await axios.get(process.env.token);
    const token = response.data.token;
    res.setHeader('Set-Cookie', [`token=${token}`]);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM