Javascript 我无法在expressjs中的http post请求中设置服务器端cookie
当我在expressjs中发出http post请求时,我试图在服务器上设置cookie,但当我发出http get请求时,cookie正在设置。我不知道原因是什么。下面是我的代码:Javascript 我无法在expressjs中的http post请求中设置服务器端cookie,javascript,node.js,express,cookies,Javascript,Node.js,Express,Cookies,当我在expressjs中发出http post请求时,我试图在服务器上设置cookie,但当我发出http get请求时,cookie正在设置。我不知道原因是什么。下面是我的代码: app.post('/tou', function(req, res) { res.setHeader('Cache-Control', 'private'); res.cookie('__pal', 'locked', { httpOnly: false, path: '/', secure: false
app.post('/tou', function(req, res) {
res.setHeader('Cache-Control', 'private');
res.cookie('__pal', 'locked', { httpOnly: false, path: '/', secure: false, expire: 6 * 60 * 60 * 1000 })
res.send('done')
})
尝试使用
'cookie'
模块(npm i cookie
)
我也有类似的问题。根据我的理解,您不能在
POST
请求上创建cookie,但是当您执行GET
请求时,将创建cookie。您应该在浏览器上使用简单的GET
方法尝试此操作,并检查是否创建了cookie。如果是这样的话,我认为,一旦您的POST
请求完成,您可能需要想出一些方法来执行get请求
app.get('/setuser', (req, res)=>{
res.setHeader('Set-Cookie', cookie.serialize('name', "value", {
httpOnly: false
}));
res.send('user data added to cookie');
});
我还想补充一点,如果您使用Postman/restclient/Curl进行测试,您将看到cookie,但它不会被设置,因此我建议您在浏览器上进行测试
(如果你有什么发现,请告诉我)
编辑#1
我发现您可以使用
res.redirect
调用GET
路由,然后将cookie设置为该方式。您确定在发出GET请求时正在设置它吗,或者,它是在您发出POST请求时设置的,然后在以后的GET请求中从浏览器发送回服务器?它是在我发出GET请求时设置的。如果是,则该代码不是原因。我使用了与您完全相同的代码,它对POST请求起作用!这就是我从客户端发出请求的方式var xhr=new XMLHttpRequest();xhr.open(“POST”、“/tou”、true);xhr.onreadystatechange=function(){//在状态更改时调用函数。if(this.readyState==XMLHttpRequest.DONE&&this.status==200){console.log('succsss')}xhr.send(“foo”)代码>获取响应:设置Cookie:\uu pal=locked;Path=/
请说明您如何在ExpressJS中设置来自服务器的cookie为什么会有不同?cookie没有设置,因为我没有添加凭据:true到cors中间件设置选项
app.get('/setuser', (req, res)=>{
res.setHeader('Set-Cookie', cookie.serialize('name', "value", {
httpOnly: false
}));
res.send('user data added to cookie');
});