【问题标题】:Cannot Set cookie in axios response无法在 axios 响应中设置 cookie
【发布时间】:2019-04-25 07:25:01
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: javascript cookies axios nuxt.js


    【解决方案1】:

    你可以试试这个:

    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=/";
          })
      }
    }
    

    【讨论】:

    • 服务器端无法访问文档
    【解决方案2】:

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

    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}`]);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2023-04-06
      • 2018-02-16
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多