【问题标题】:Express: fetch unable to set cookieExpress: fetch 无法设置 cookie
【发布时间】:2017-07-05 12:54:23
【问题描述】:

我使用下面的设置使用 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了。

为什么?

【问题讨论】:

  • 什么是fetch('/b', {method: 'POST'})
  • 你如何检查cookie没有被设置?
  • 我编辑问题@hjpotter92
  • 访问一个,控制台它@robertklep

标签: javascript ajax node.js express cookies


【解决方案1】:

当使用fetch()时,你需要明确告诉它cookies应该随请求一起发送:

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

参考:MDN

【讨论】:

    猜你喜欢
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 2021-03-30
    • 1970-01-01
    • 2021-07-03
    • 2017-07-31
    • 1970-01-01
    相关资源
    最近更新 更多