Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我无法在expressjs中的http post请求中设置服务器端cookie_Javascript_Node.js_Express_Cookies - Fatal编程技术网

Javascript 我无法在expressjs中的http post请求中设置服务器端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

当我在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, 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'); 
  });