【问题标题】:Node.js express cannot set cookies on HerokuNode.js express 无法在 Heroku 上设置 cookie
【发布时间】:2021-03-30 14:23:29
【问题描述】:

似乎无法弄清楚这一点。我有一个使用 create-react-app 的客户端,它在 express/graphql 上向服务器发送请求,它在本地为 JWT 令牌设置 cookie,但我无法在 heroku 上设置 cookie。

有谁知道如何获取 cookie 来保存?

import dotenv from 'dotenv';
dotenv.config();

import express, { response } from 'express';
import { graphqlHTTP } from 'express-graphql';
import cookieParser from 'cookie-parser';
import Access from './entity/access';
import cors from 'cors';

import { schema, root } from './api/schema';
import { createConnection } from 'typeorm'; 

createConnection()
  .then(async (connection) => {
    await Access.load();
    const app = express();
    const corsOptions = {
      origin: process.env.CORS_ORIGIN!,
      credentials: true,
      optionsSuccessStatus: 200
    };

    app.set('trust proxy', 1);
    app.use(cors(corsOptions));
    app.use(express.json());
    app.use(cookieParser());

    app.use(
      process.env.GRAPHQL_PATH!,
      graphqlHTTP((request, response, graphQLParams) => ({
        schema: schema,
        rootValue: root,
        graphiql: true,
        context: {
          req: request,
          res: response,
        },
      }))
    );

    app.listen(parseInt(process.env.PORT! || process.env.APP_PORT!));
    console.log(
      `Server started`
    );
  })
  .catch((err) => {
    console.log(err);
  });
export function setRefreshTokenCookie(res: Response, token: string) {
  const refreshExpiration = Access.refreshExpiration();

  res.cookie(process.env.REFRESH_TOKEN_NAME!, token, {
    domain: process.env.REFRESH_TOKEN_DOMAIN!,
    secure: process.env.REFRESH_TOKEN_SECURE! == "true",
    httpOnly: process.env.REFRESH_TOKEN_HTTPONLY! == "true",
    expires: refreshExpiration,
    maxAge: refreshExpiration.getTime(), 
  });
}

【问题讨论】:

    标签: node.js express heroku cookies


    【解决方案1】:

    发现问题出在 api 和客户端位于不同的域中。我将 api 切换到 api.domain.com 并将客户端放在 domain.com 上,现在 cookie 已正确保存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 2013-01-06
      • 2017-07-05
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多