Nodejs中 js 的 forward 是否可以带已经获取的 cookie

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

Nodejs中 js 的 forward 是否可以带已经获取的 cookie
项目需要接入别的公司开发一套服务直接从我们的页面跳转到对面的页面,通过 httpclient 获取对方的 cookie 之后,由 js 通过这个 cookie 来访问对方页面(目的是为了隐藏对方登录的过程),但是 http 请求会跨域 forward 不会,所以能不能通过重定向来使用这个 cookie 呢?或者说在不解决跨域的基础上有更好的方法。

1 回复

在 Node.js 中,使用 JavaScript 实现请求转发(forward)并携带已经获取的 Cookie 通常涉及中间件或代理服务器处理。Node.js 本身并没有内置的 forward 方法,但你可以通过一些库如 expresshttp-proxy-middleware 来实现这一功能。

以下是一个使用 expresshttp-proxy-middleware 的示例,展示如何在转发请求时携带 Cookie:

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');

const app = express();

// 假设你已经获取了 Cookie
const cookies = { 'session_id': '123456' };

// 创建一个代理中间件
const proxy = createProxyMiddleware({
  target: 'http://localhost:3000',  // 目标服务器
  changeOrigin: true,
  onProxyReq: (proxyReq, req) => {
    // 设置 Cookie 到代理请求头
    Object.keys(cookies).forEach(cookieName => {
      proxyReq.setHeader('Cookie', `${cookieName}=${cookies[cookieName]}`);
    });
  }
});

app.use('/api', proxy);  // 将 /api 路径下的请求代理到目标服务器

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

在这个示例中,我们创建了一个代理中间件,将所有发送到 /api 路径的请求转发到 http://localhost:3000,并在转发请求时添加已经获取的 Cookie。

注意,这个示例中的 Cookie 是硬编码的,实际应用中你可能需要从请求中解析 Cookie。

回到顶部