Skip to content

Instantly share code, notes, and snippets.

@infomiho
Last active July 31, 2024 10:11
Show Gist options
  • Save infomiho/5ca98e5e2161df4ea78f76fc858d3ca2 to your computer and use it in GitHub Desktop.
Save infomiho/5ca98e5e2161df4ea78f76fc858d3ca2 to your computer and use it in GitHub Desktop.
Multiple domains for CORS - custom global middleware in Wasp 0.12+
app corsTest {
wasp: {
version: "^0.14.0"
},
title: "cors-test",
server: {
middlewareConfigFn: import { getGlobalMiddleware } from "@src/data",
}
}
route RootRoute { path: "/", to: MainPage }
page MainPage {
component: import { MainPage } from "@src/MainPage"
}
query getSomeData {
fn: import { getSomeData } from "@src/data",
entities: []
}
import cors from "cors";
import { MiddlewareConfigFn } from "wasp/server";
import { GetSomeData } from "wasp/server/operations";
export const getSomeData: GetSomeData = async (_args, _context) => {
return {
someData: "Hello from the server!",
};
};
export const getGlobalMiddleware: MiddlewareConfigFn = (config) => {
const isDevelopment = process.env.NODE_ENV === "development";
const clientUrl = process.env.WASP_WEB_CLIENT_URL ?? "http://localhost:3000";
// Allow all origins in development, otherwise only allow the client URL.
const origin = isDevelopment ? "*" : [clientUrl, 'http://someotherurl.com'];
// Remove the default setup and provide a new custom setup for the CORS middleware
config.delete("cors");
config.set(
"cors",
cors({
origin,
})
);
return config;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment