想问一下为什么我使用fetch提交表单数据,express无法设置cookie,而直接使用form标签时却可以设置。
为了方便,我把模拟的代码全贴上来
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var app = express();
app.use(require('cookie-parser')());
app.get('/aa', function (req, res) {
console.log(req.cookies);
res.cookie('aa', 'aa');
res.send('a');
});
app.post('/bb', function (req, res) {
console.log(req.cookies);
res.cookie('bb', 'bb');
res.send('bb');
})
app.get('*', function (req, res){
console.log('get *');
console.log('cookie: ', req.cookies);
res.sendFile(path.resolve(__dirname, 'a.html'));
});
app.listen('3002', function () {
console.log('start working');
});
fetch
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
与XMLHttpRequest一样,从服务器返回的Set-Cookie响应头是Forbidden header name,因此无法使用response.headers.get()进行读取。 浏览器负责处理设置新的Cookie,cookie可以通过document.cookie读取。但fetch的默认行为是完全忽略Set-Cookie头。想从服务器接受Cookie,您必须使用credentials选项。
credentials选项列表
从stack overflow得到了答案了
fetch('/b', { method : 'post', credentials : 'include' })