I know this has been asked before, but I have scoured other answers and nothing seems to be working.
I am getting the error
Access to XMLHttpRequest at 'https://f604-104-49-198-21.ngrok.io/user/save' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
When making a request from localhost:3000 (React app) to my expressjs app using Ngrok.
Below is my server.js file. I am not sure the issue here.
const express = require("express");
var expressSession = require("express-session");
const cors = require("cors");
const path = require("path");
const app = express();
const axios = require("axios");
const mongoose = require("mongoose");
const rateLimit = require("express-rate-limit");
var cron = require("node-cron");
require("dotenv").config();
const corsConfig = {
origin: "http://localhost:3000",
methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
credentials: true,
};
// Implemented a rate limiter which is a TEMPORARY FIX for the infinite loop by the useEffect
const limiter = rateLimit({
windowMs: 0.1 * 60 * 1000, // 10 seconds limit
max: 4,
});
// Middleware
const { authenticateJWT } = require("./Middleware/JwtMiddleware");
async function connectToDB() {
// Database
await mongoose.connect(
process.env.mongo_url,
{ useNewUrlParser: true, useUnifiedTopology: true },
() => {
console.log("[connectToDB]: Connected to DB");
}
);
}
connectToDB();
// Creating the session in order to save user data to req.session
app.use(
expressSession({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: true,
credentials: true, // enable set cookie
})
);
app.use(cors(corsConfig));
//app.use('/', limiter);
app.use(express.json());
app.use("/invoice", require("./Routes/Store-Invoices"));
app.use(
"/",
require("./Routes/SaveLoggedInUser"),
authenticateJWT,
require("./Routes/GetUserInvoices")
);
app.use("/", require("./Routes/UpdateUserData"));
app.get("/", async (req, res) => {
res.sendFile(path.join(__dirname, "build", "index.html"));
});
app.listen(8081, () => {
console.log(`Server listening on 8081`);
});