Reactjs 在本地情况下,在后端前端之间共享cookie,并维护登录名,但在部署后,不会维护登录名

Reactjs 在本地情况下,在后端前端之间共享cookie,并维护登录名,但在部署后,不会维护登录名,reactjs,next.js,Reactjs,Next.js,我正在以各种方式更改设置 它失败了 back/index.js if (prod) { app.use(hpp()); app.use(helmet()); app.use(morgan('combined')); app.use(cors({ origin: /api.nodebird\.com$/, credentials: true, })); } else { app.use(morgan('dev'));

我正在以各种方式更改设置 它失败了

back/index.js

if (prod) {
    app.use(hpp());
    app.use(helmet());
    app.use(morgan('combined'));
    app.use(cors({
        origin: /api.nodebird\.com$/,
        credentials: true,
    }));
} else {
    app.use(morgan('dev'));
    app.use(cors({
        origin: true,
        credentials: true,
    }));
}
app.use(cookieParser(process.env.COOKIE_SECRET));
app.use(expressSession({
    resave: false,
    saveUninitialized: false,
    secret: process.env.COOKIE_SECRET,
    cookie: {
        httpOnly: true,
        secure: false, // https를 쓸 때 true
        domain: prod && '.terecal-nodebird.com',
        // domain: prod && '.terecal-nodebird.com',
    },
    name: 'rnbck',
}));
front/server.js

    server.use(expressSession({
        resave: false,
        saveUninitialized: false,
        // secret: '',
        secret: process.env.COOKIE_SECRET,
        cookie: {
            httpOnly: true,
            secure: false,
        },
    }));
为什么它可以在我的本地服务器上正常工作,但在Amazon服务器上却不行

在本地环境中,若我请求localhost:3060,那个么会维护登录名,但在127.0.0.1:3060时,不会维护登录名

也许这与此有关


如果您知道,请告诉我谢谢您将部署到两个不同的域

  • 返回:api-terecal-notebird.com
  • 首页:terecal-nodebird.com
  • 您(通常)不能在域之间共享cookie。我假设它在您的本地环境中工作,因为两者都位于localhost中,所以cookie可以共享。你可以阅读更多关于这方面的内容

    我的建议是将您的后端服务器移动到与前端相同的域中,这样他们就可以在他们之间共享cookie

    例如: 将后端服务器移动到api.terecal-nodebird.com,并将cookie设置为具有
    .terecal-nodebird.com
    的域


    您只需将后端移动到生产中的
    terecal nodebird.com/api

    ,后端服务器和前端服务器位于哪些域中?返回:api-terecal-notebird.com,front:terecal-nodebird.com谢谢我需要维护两个域,因为我的目标是构建一个前端后端服务器,使用两个域相互通信。谢谢你介意我问你为什么要这么做吗?