Cookie与Session以及前后端请求头的响应

前端:

// 发送请求时,将Cookie添加到请求头中
const xhr = new XMLHttpRequest();
xhr.open('GET', '/api/some-endpoint');
xhr.setRequestHeader('Cookie', document.cookie); // 将本地保存的Cookie添加到请求头中
xhr.send();

// 接收响应时,可以从响应头中获取新的Cookie
xhr.onreadystatechange = function() {
  if (xhr.readyState === XMLHttpRequest.DONE) {
    if (xhr.status === 200) {
      const newCookie = xhr.getResponseHeader('Set-Cookie');
      // 将新的Cookie保存在本地
      if (newCookie) {
        document.cookie = newCookie;
      }
      // 处理响应数据
      const responseData = xhr.responseText;
      // ...
    } else {
      // 处理错误
    }
  }
};

后端:

app.get('/api/some-endpoint', (req, res) => {
  // 读取客户端发送的Cookie
  const clientCookie = req.headers.cookie;
  // 处理Cookie数据
  // ...

  // 设置新的Cookie,将其添加到响应头中
  res.setHeader('Set-Cookie', 'newCookie=value; Max-Age=3600; Secure; HttpOnly');
  
  // 返回响应数据
  res.send('Response data');
});

在前端代码中,我们使用XMLHttpRequest对象发送请求,并在请求头中添加了"Cookie"字段,其值为document.cookie,即本地保存的Cookie数据。

在后端代码中,我们使用Express框架创建了一个路由处理程序。在该处理程序中,我们可以通过req.headers.cookie读取客户端发送的Cookie数据,并可以根据需要对Cookie进行处理。然后,我们使用res.setHeader('Set-Cookie', ...)设置一个新的Cookie,并将其添加到响应头中,以便在浏览器中保存。

通过这种方式,服务器可以将唯一的session保存在Cookie中,并在响应中将该Cookie发送给客户端。当用户再次访问网站时,浏览器会自动将该Cookie添加到请求头中,作为唯一的登录标识发送给服务器进行验证。

具体的流程如下:

  1. 客户端发送第一次请求时,服务器会在响应头中设置一个名为"Set-Cookie"的字段,该字段包含了一个唯一的session标识,以及其他的Cookie属性(例如过期时间、安全性等)。
  2. 浏览器接收到响应后,会将"Set-Cookie"字段中的值保存在本地的Cookie中。
  3. 当客户端再次发送请求时,浏览器会自动将保存的Cookie添加到请求头中的"Cookie"字段中。
  4. 服务器接收到请求后,可以通过解析请求头中的"Cookie"字段来读取客户端发送的Cookie数据,包括保存的session标识。
  5. 服务器可以根据session标识进行用户身份验证或其他操作,并在响应中设置新的Cookie,以便在下一次请求时继续使用。

通过这种方式,服务器可以通过Cookie在客户端和服务器之间传递数据,并维持用户的登录状态或其他状态信息。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值