我正在使用一个名为reactjs的应用程序应用程序框架,我遇到的问题是设置httpOnly cookie,因为它们无法从客户端设置/读取我需要弄清楚如何使用为此表达。
我提出的一个想法是向/cookie:data
之类的路线发出一个帖子请求,其中数据是需要存储在cookie中的令牌值,所以:
app.post('/cookie:data', function(req, res) {
// Set cookie here
res.send(200)
})
问题我犹豫是该令牌包含用于保护api的唯一用户标识符,我不确定我是否通过这种方式设置cookie来暴露这一点。
或者不使用:data
而是找出如何从post请求中获取数据(json对象)将是有益的
修改 我能想到的一个问题是,任何人都可以发布到这条路线并设置不同的cookie吗?什么是保护它的方法?
编辑2: 这是我用来代理api调用的快速设置(仅用于澄清注释)
app.use('/api', function (req, res) {
let url = config.API_HOST + req.url
req.pipe(request(url)).pipe(res)
})
答案 0 :(得分:1)
假设您要将以/api
开头的所有请求代理到第三方(/api/users
除外),您希望“手动”执行,因为它会返回您需要的令牌:
app.post('/api/users', function(req, res) {
let url = config.API_HOST + req.url;
let apiRequest = request.post(url, function(err, response, body) {
// Responses are just examples, you should tailor them to your situation
if (err) {
return res.sendStatus(500);
} else if (response.statusCode !== 200) {
return res.sendStatus(response.statusCode);
} else {
res.cookie('token', body).send('OK');
}
});
req.pipe(apiRequest);
})
app.use('/api', function (req, res) {
let url = config.API_HOST + req.url
req.pipe(request(url)).pipe(res)
})