让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到我的所有请求中。
我遇到了同样的问题,并通过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
标志。