如何在Koa中设置跨域cookie

时间:2018-05-15 15:31:23

标签: javascript node.js reactjs cookies axios

我有一个带有身份验证解析程序的Koa和GraphQL API,它会在响应Cookie中添加一个身份验证令牌。

我的API在http://localhost:3000上运行,而我的前端在http://localhost:3001上运行。为了完成这项工作,我需要在我的API请求中添加withCredentials标志,并使用{ origin: false, credentials: true }配置我的Koa / Cors选项。如果没有这些设置,我会收到一个CORS错误,我发现它很混乱,因为它们都在localhost上,所以在技术上是相同的域......?

使用此API会有多个前端,需要在cookie中进行身份验证并获取身份验证令牌。当我将我的域名欺骗为http://app1.dev& http://app2.dev,都在http://localhost:3000上调用API,在响应Cookie中设置了auth令牌,但浏览器不会像所有内容localhost那样存储Cookie。

在我的API上,我使用@koa/cors来配置我的角色,然后设置以下内容:

app.use(cors({ origin: false, credentials: true }))

在我的前端反应应用程序上,我有一个请求函数,我用于所有的GraphQL查询:

const request = query => {

  const request = axios.create({
    baseURL: apiUrl,
    headers: {'X-apikey': apiKey},
    withCredentials: true,
  });

  return request.post('/graphql', { query })
    .then(res => res.data)
    .catch(console.error)
}

为什么没有在浏览器中设置cookie?

编辑:更新了我的axios请求以创建axios实例并尝试设置withCredentials。我仍然没有在dev工具中看到我的请求中的凭证参数。我怀疑这可能是问题吗?

0 个答案:

没有答案