From f189c6fa943ec47f704fb0fc58a543a375c3293a Mon Sep 17 00:00:00 2001 From: Tal Jacob Date: Wed, 24 Sep 2025 19:36:48 +0300 Subject: [PATCH 1/4] Add Multiple Frontend URLs In Cors Backend --- nextstep-backend/src/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextstep-backend/src/app.ts b/nextstep-backend/src/app.ts index 30aef16..a32dc72 100644 --- a/nextstep-backend/src/app.ts +++ b/nextstep-backend/src/app.ts @@ -24,7 +24,7 @@ const specs = swaggerJsdoc(options); const app = express(); const corsOptions = { - origin: [config.app.frontend_url(), config.app.backend_url()], + origin: [config.app.frontend_url().split(","), config.app.backend_url()], methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', credentials: true, // Allow cookies to be sent with requests }; From 37b90b4bb9d61a95e66a40f06312a1b5f9e0f5f5 Mon Sep 17 00:00:00 2001 From: Tal Jacob Date: Wed, 24 Sep 2025 20:02:37 +0300 Subject: [PATCH 2/4] Query Backend Based Of Windows Location This fixes CORS Errors, To Query To Appropriate Backend Based Of The Current Protocol (Http, Or Https) --- nextstep-frontend/src/config.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nextstep-frontend/src/config.ts b/nextstep-frontend/src/config.ts index 60f2279..31a31fa 100644 --- a/nextstep-frontend/src/config.ts +++ b/nextstep-frontend/src/config.ts @@ -1,6 +1,7 @@ export const config = { app: { - backend_url: () => import.meta.env.VITE_BACKEND_URL || 'http://localhost:3000', + backend_url: () => import.meta.env.VITE_BACKEND_URL.split(",") + .filter((backendUrl: string) => backendUrl.includes(window.location.protocol))[0], }, socketMethods: { messageFromServer: "message-from-server", From dcbc3b47710aabd9181ff10fb00c3a16860757ac Mon Sep 17 00:00:00 2001 From: Tal Jacob Date: Wed, 24 Sep 2025 20:08:47 +0300 Subject: [PATCH 3/4] Change Delimiter From `,` To `;` And Document In `.env.template` Files --- nextstep-backend/.env.template | 2 +- nextstep-backend/src/app.ts | 2 +- nextstep-frontend/.env.template | 2 +- nextstep-frontend/src/config.ts | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nextstep-backend/.env.template b/nextstep-backend/.env.template index c325bb8..0c16a46 100644 --- a/nextstep-backend/.env.template +++ b/nextstep-backend/.env.template @@ -5,7 +5,7 @@ DB_CONNECTION= ACCESS_TOKEN_SECRET= TOKEN_EXPIRATION= REFRESH_TOKEN_EXPIRATION= -FRONTEND_URL= +FRONTEND_URL= BACKEND_URL= FIREBASE_SERVICE_ACCOUNT={"type": "service_account","project_id": ,"private_key_id": ,"private_key": ,"client_email": ,"client_id": ,"auth_uri": "https://accounts.google.com/o/oauth2/auth","token_uri": "https://oauth2.googleapis.com/token","auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs","client_x509_cert_url": <>,"universe_domain": "googleapis.com"} OPENROUTER_API_KEY= diff --git a/nextstep-backend/src/app.ts b/nextstep-backend/src/app.ts index a32dc72..25fb72b 100644 --- a/nextstep-backend/src/app.ts +++ b/nextstep-backend/src/app.ts @@ -24,7 +24,7 @@ const specs = swaggerJsdoc(options); const app = express(); const corsOptions = { - origin: [config.app.frontend_url().split(","), config.app.backend_url()], + origin: [config.app.frontend_url().split(";"), config.app.backend_url()], methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', credentials: true, // Allow cookies to be sent with requests }; diff --git a/nextstep-frontend/.env.template b/nextstep-frontend/.env.template index 59afee2..9c4a6b4 100644 --- a/nextstep-frontend/.env.template +++ b/nextstep-frontend/.env.template @@ -1,7 +1,7 @@ ## This is an extra file VITE_PORT= -VITE_BACKEND_URL= +VITE_BACKEND_URL= VITE_DOMAIN_NAME= VITE_ALLOWED_HOSTS= VITE_REACT_APP_FIREBASE_API_KEY= diff --git a/nextstep-frontend/src/config.ts b/nextstep-frontend/src/config.ts index 31a31fa..1fb922e 100644 --- a/nextstep-frontend/src/config.ts +++ b/nextstep-frontend/src/config.ts @@ -1,6 +1,6 @@ export const config = { app: { - backend_url: () => import.meta.env.VITE_BACKEND_URL.split(",") + backend_url: () => import.meta.env.VITE_BACKEND_URL.split(";") .filter((backendUrl: string) => backendUrl.includes(window.location.protocol))[0], }, socketMethods: { From bbf21fe8cedae540b1a12c00f3906446faafb1c4 Mon Sep 17 00:00:00 2001 From: Tal Jacob Date: Wed, 24 Sep 2025 20:20:07 +0300 Subject: [PATCH 4/4] Fix `frontend_url` Split In The Backend --- nextstep-backend/src/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nextstep-backend/src/app.ts b/nextstep-backend/src/app.ts index 25fb72b..c512095 100644 --- a/nextstep-backend/src/app.ts +++ b/nextstep-backend/src/app.ts @@ -24,7 +24,7 @@ const specs = swaggerJsdoc(options); const app = express(); const corsOptions = { - origin: [config.app.frontend_url().split(";"), config.app.backend_url()], + origin: [...(config.app.frontend_url().split(";")), config.app.backend_url()], methods: 'GET,HEAD,PUT,PATCH,POST,DELETE', credentials: true, // Allow cookies to be sent with requests };