让Axios自动发送cookies

我正在使用Axios将客户端的请求发送到我的Express.js服务器。

我在客户端设置了一个cookie,我想从所有的Axios请求中读取这个cookie,而不用手工添加它们来请求。

这是我的客户请求示例:

axios.get(`some api url`).then(response => ... 

我试图通过在我的Express.js服务器中使用这些属性来访问标头或cookie:

 req.headers req.cookies 

他们都没有包含任何cookies。 我正在使用cookieparsing器中间件:

 app.use(cookieParser()) 

如何让Axios自动发送请求中的cookies?

编辑:

我在客户端上设置cookie如下所示:

 import cookieClient from 'react-cookie' ... let cookie = cookieClient.load('cookie-name') if(cookie === undefined){ axios.get('path/to/my/cookie/api').then(response => { if(response.status == 200){ cookieClient.save('cookie-name', response.data, {path:'/'}) } }) } ... 

虽然它也使用Axios,但与问题无关。 一旦cookie被设置,我只想将cookieembedded到我的所有请求中。

       

网上收集的解决方案 "让Axios自动发送cookies"

我遇到了同样的问题,并通过Credential属性来修复它。

来自不同域的XMLHttpRequest无法为其自己的域设置Cookie值,除非在提出请求之前将Credentials设置为true。

 axios.get('some api url', {withCredentials: true}); 

我不熟悉Axios,但据我所知在JavaScript和AJAX有一个选项

 withCredentials: true 

这会自动发送cookie到客户端。 作为一个例子,这个场景也是用passportjs生成的,它在服务器上设置一个cookie

你正在得到这两个认为混合。

你有“反应曲奇”和“axios”

react-cookie =>用于处理客户端的cookie

axios =>用于向服务器发送ajax请求

有了这些信息,如果您希望客户端的cookies也可以在后端进行沟通,您需要将它们连接在一起。

来自“react-cookie”的注意事项自述文件:

同构cookies!

为了能够在进行服务器渲染时访问用户的cookie,可以使用plugToRequest或者setRawCookie。

链接到自述文件

如果这是你所需要的,那很好。

如果没有,请评论,以便我可以详细说明。

另一个解决scheme是使用这个库:

https://github.com/3846masa/axios-cookiejar-support

它将“艰难曲奇”支持集成到Axios中。 请注意,这种方法仍然需要withCredentials标志。