即使存在标题,也无法在浏览器中设置Cookie

时间:2016-05-09 15:51:16

标签: javascript node.js express cookies

我正在努力为我的项目添加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)));
    }
};

我不知道为什么浏览器会在这种情况下采取不同的行动,特别是在这么简单的情况下。你们都有什么可能导致这种情况的线索吗?

1 个答案:

答案 0 :(得分:1)

您需要在XHR请求(https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)上设置withCredentials