首页 > 解决方案 > Axios GET 未将 cookie 传递给 ExpressJS 服务器

问题描述

问题似乎是 axios 没有将 cookie 与 GET 请求一起传递到 /validate 端点,但它可以通过 reactJS 客户端应用程序工作。/validate 获取 cookie,提取令牌并对返回响应的用户数据库进行 axios 调用。

这个想法是让带有 cookie 调用的 curl 与这个 API 服务器以及 UI 客户端应用程序一起工作。一切都在同一个虚拟机上,我尝试在 API 服务器上使用 cors 并在 Auth 上使用 allow-headers 但没有奏效。

Cookie 设置

res.cookie('token', response.data.access_token, { maxAge: 9000000, httpOnly: true, sameSite: 'lax', signed: false, secure: true });

ExpressJS API 服务器

console.log(request.cookies) <--I can see cookies
axios.get('https://server.com/validate', {withCredentials: true})
        .then((res) => {
          console.log(res.headers)
          console.log("API says ayyyyy")
          next()
        }, (error) => {
          //console.log(error)
          console.log("API says noooo")

    });

ExpressJS 身份验证服务器

  router.use('/validate', function(req, res, next) {
  let accessTok = req.cookies['c_accessToken']; <-- no cookies here
  let accessToken = 'Bearer ' + `${accessTok}`;
  
  axios.request({
    url: '/oauth/me',
    method: 'get',
    baseURL: process.env.RT_VENDOR_HOST_UAT,
    headers: {
      'Authorization': `${accessToken}`,
      'content-type': 'application/json'
    }
  })
  .then(response => {

标签: expresscookiesaxios

解决方案


推荐阅读