Express:fetch无法设置cookie

时间:2017-02-16 12:07:18

标签: javascript ajax node.js express cookies

我使用以下内容使用express设置cookie。

app.use(require('cookie-parser')());
app.get('/a', function (req, res) {
    console.log(req.cookies);
    res.cookie('aaa', 'bbb');
    res.send('something');
});

app.post('/b', function (req, res) {
    console.log(req.cookies);
    res.cookie('ccc', 'ddd');
    res.send('something');
})

如果直接访问a,可以设置cookie。

<form method="POST" action="/bb">
    <label>name</label>
    <input type="submit" value="login" />
</form>
<div id='test'>fetch</div>
<script>
    var test = document.getElementById('test');
    test.onclick = function () {
        fetch('/b', {
            method: 'POST'
        }).then( (data) => {
            data.text().then(function(data) {console.log(data)});
        })
    }
</script>

如果点击提交,可以设置cookie, 但如果点击测试,则无法设置cookie。

为什么呢?

1 个答案:

答案 0 :(得分:0)

使用fetch()时,您需要明确告知Cookie应与请求一起发送:

fetch('/b', { method : 'post', credentials : 'include' })

参考:MDN