我正在努力为我的项目添加Cookie,完整来源here,但我遇到了一个无法正确设置Cookie的问题。我创建了一个新的api路由,它只创建一个cookie并将一个对象发送给客户端。
服务器/路由/ todo.routes.js
router.get('/todos', (req, res) => {
res.cookie('mycookie', 'a_value')
return res.send([{id:'1',isCompleted:false,text:'something'}])
})
如果我直接调用此api路由,浏览器会渲染对象并设置cookie。问题是当我从渲染页面通过AJAX调用此api时,我仍然得到相同的响应,但是没有设置cookie。 注意:我导出路由器并执行app.use('/ api',exported_object_here),因此URL为/ api / todos。
共享/动作/ todo.actions.js
export const getTodos = () => {
return (dispatch) => {
return fetch('/api/todos')
.then(response => response.json())
.then(todo => dispatch(_receiveTodos(todo)))
.catch(err => dispatch(_errorHandler(err)));
}
};
我不知道为什么浏览器会在这种情况下采取不同的行动,特别是在这么简单的情况下。你们都有什么可能导致这种情况的线索吗?
答案 0 :(得分:1)
您需要在XHR请求(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)上设置withCredentials