快递:抓取无法设置Cookie
问题描述:
我使用下面的代码使用express设置cookie。快递:抓取无法设置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()
,你需要明确地告诉它的cookie应以请求一起发送:
fetch('/b', { method : 'post', credentials : 'include' })
参考:MDN
什么是'取( '/ B',{方法:“ POST'})'? – hjpotter92
你是如何检查cookie没有被设置的? – robertklep
我编辑问题@ hjpotter92 – Eason