React Production And Cookie Problems
Solution 1:
I had faced a similar issue a few months ago. Here's how I solved it.
After running npm build
and serving the production build locally, you must have noticed that It stops accepting cookies.
While building my app, I also had this exact issue on local. As I was working on a hobby project I decided to deploy my express-API-server to Heroku and my react-redux client on Netlify to check. (Note: Never push to production without adequate testing.)
Using the "edit this cookie" extension (can be also viewed using browser dev tools ), I found my cookies created at the API server domain, also the API server doesn't send over the cookies to my client. After a lot of research, I didn't get a concrete solution to why this issue persists.
Generally, I saw use credentials: true
which seems to solve the issue in most cases (Where I saw no information regarding deployment/production enviornments) but It didn't seem to work for me however, I got some insights.
I decided to use a different approach to solve this. (JWTs)
My insights,
- Check your
domain
andsameSite
cookie options, if you're accessing from a client at another domain. (Here, I'm assuming you want to deploy your client somewhere else)
- You have to set
sameSite:false
for setting cookies at another domain.
If you're making a SPA, why not bundle the client together with the express server? So this solves the
CORS
and cookie domain issues.const express = require('express'); const path = require('path'); const app = express(); app.use(express.static(path.join(__dirname, 'build'))); app.get('/', function (req, res) { res.sendFile(path.join(__dirname, 'build', 'index.html')); }); app.listen(9000);
Use Token-based sessions (JWT)
- Agreed not ideal in every situation, but it helps for most scenarios.
I have built a few MERN-based apps, most deployed. Refer those to see how JWT is implemented in MERN.
References
Post a Comment for "React Production And Cookie Problems"