需要在跨域请求中携带另外一个域名下的 Cookie 该如何操作?【热度: 254】

关键词:跨域 cookie

在跨域请求中携带另外一个域名下的 Cookie,需要通过设置响应头部的Access-Control-Allow-Credentials字段为true,并且请求头部中添加withCredentials字段为true。

在服务端需要设置响应头部的Access-Control-Allow-Origin字段为指定的域名,表示允许指定域名的跨域请求携带Cookie。

下面是一个示例代码(Node.js):

const express = require('express');
const app = express();

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', 'http://example.com');
  res.setHeader('Access-Control-Allow-Credentials', 'true');
  next();
});

app.get('/api/data', (req, res) => {
  // 处理请求
  res.send('Response Data');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

在客户端发起跨域请求时,需要设置请求头部的withCredentials字段为true,示例代码(JavaScript):

fetch('http://example.com/api/data', {
  credentials: 'include',
})
  .then(response => response.text())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

以上代码中,Access-Control-Allow-Origin设置为'http://example.com',表示允许该域名的跨域请求携带Cookie。fetch请求的参数中,credentials设置为'include'表示请求中携带Cookie。