简体   繁体   中英

MERN project | Heroku doesn't set client-side cookie

My MERN project work well on my local but when I deployed it I get 401 error while fetching user. Heroku doesn't set client-side cookie. Then I have searched on google first ı change my cookie-session to express-session and some other configuration and still, it doesn't work on Heroku. https://github.com/olcaykaplan/passport_google

cors:

app.use(
  cors({
    origin: "http://localhost:3000",
    credentials: true,
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    allowedHeaders: ['Content-Type', 'Authorization']

  })
);

express session:

    app.use(
  express.session({
    secret: "secret",
    resave: false,
    saveUninitialized: true,
    store: sessionStore,
    proxy: true,
    cookie: {
      httpOnly:true,
      secure: true,
      maxAge: oneDay,
    },
  })
);

在此处输入图片说明

在此处输入图片说明

if your client side work on local, change secure value to false, remove proxy and sameSite

The project was working fine with the following cors and session information

app.use(
  cors({
    origin: "netlify url",
    credentials: true,
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    allowedHeaders: ['Content-Type', 'Authorization']

  })
);
const oneDay = 1000 * 60 * 60 * 24; // Equals 1 day (1 day * 24 hr/1 day * 60 min/1 hr * 60 sec/1 min * 1000 ms / 1 sec)
app.use(cookieParser("secret"));
app.use(
  express.session({
    secret: "secret",
    resave: false,
    saveUninitialized: true,
    store: sessionStore,
    proxy: true, 
    cookie: {
      sameSite:"none", 
      //path: "/",
      httpOnly:true,
      secure: true, 
      maxAge: oneDay,
    },
  })
);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM