mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 17:27:16 +00:00
feat(api): custom cors settings
This commit is contained in:
@@ -199,7 +199,29 @@ const envSchema = z
|
|||||||
INF_APP_CONNECTION_GITHUB_APP_CLIENT_SECRET: zpStr(z.string().optional()),
|
INF_APP_CONNECTION_GITHUB_APP_CLIENT_SECRET: zpStr(z.string().optional()),
|
||||||
INF_APP_CONNECTION_GITHUB_APP_PRIVATE_KEY: zpStr(z.string().optional()),
|
INF_APP_CONNECTION_GITHUB_APP_PRIVATE_KEY: zpStr(z.string().optional()),
|
||||||
INF_APP_CONNECTION_GITHUB_APP_SLUG: zpStr(z.string().optional()),
|
INF_APP_CONNECTION_GITHUB_APP_SLUG: zpStr(z.string().optional()),
|
||||||
INF_APP_CONNECTION_GITHUB_APP_ID: zpStr(z.string().optional())
|
INF_APP_CONNECTION_GITHUB_APP_ID: zpStr(z.string().optional()),
|
||||||
|
|
||||||
|
/* CORS ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
CORS_ALLOWED_ORIGINS: zpStr(
|
||||||
|
z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.transform((val) => {
|
||||||
|
if (!val) return undefined;
|
||||||
|
return JSON.parse(val) as string[];
|
||||||
|
})
|
||||||
|
),
|
||||||
|
|
||||||
|
CORS_ALLOWED_HEADERS: zpStr(
|
||||||
|
z
|
||||||
|
.string()
|
||||||
|
.optional()
|
||||||
|
.transform((val) => {
|
||||||
|
if (!val) return undefined;
|
||||||
|
return JSON.parse(val) as string[];
|
||||||
|
})
|
||||||
|
)
|
||||||
})
|
})
|
||||||
// To ensure that basic encryption is always possible.
|
// To ensure that basic encryption is always possible.
|
||||||
.refine(
|
.refine(
|
||||||
|
|||||||
@@ -87,7 +87,16 @@ export const main = async ({ db, hsmModule, auditLogDb, smtp, logger, queue, key
|
|||||||
|
|
||||||
await server.register<FastifyCorsOptions>(cors, {
|
await server.register<FastifyCorsOptions>(cors, {
|
||||||
credentials: true,
|
credentials: true,
|
||||||
origin: appCfg.SITE_URL || true
|
...(appCfg.CORS_ALLOWED_ORIGINS?.length
|
||||||
|
? {
|
||||||
|
origin: appCfg.CORS_ALLOWED_ORIGINS
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
origin: appCfg.SITE_URL || true
|
||||||
|
}),
|
||||||
|
...(appCfg.CORS_ALLOWED_HEADERS?.length && {
|
||||||
|
allowedHeaders: appCfg.CORS_ALLOWED_HEADERS
|
||||||
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
await server.register(addErrorsToResponseSchemas);
|
await server.register(addErrorsToResponseSchemas);
|
||||||
|
|||||||
@@ -34,6 +34,27 @@ Used to configure platform-specific security and operational settings
|
|||||||
this to `false`.
|
this to `false`.
|
||||||
</ParamField>
|
</ParamField>
|
||||||
|
|
||||||
|
## CORS
|
||||||
|
|
||||||
|
Cross-Origin Resource Sharing (CORS) is a security feature that allows web applications running on one domain to access resources from another domain.
|
||||||
|
The following environment variables can be used to configure the Infisical Rest API to allow or restrict access to resources from different origins.
|
||||||
|
|
||||||
|
<ParamField query="CORS_ALLOWED_ORIGINS" type="string" optional>
|
||||||
|
|
||||||
|
Specify a list of origins that are allowed to access the Infisical API.
|
||||||
|
|
||||||
|
An example value would be `CORS_ALLOWED_ORIGINS=["https://example.com"]`.
|
||||||
|
|
||||||
|
Defaults to the same value as your `SITE_URL` environment variable.
|
||||||
|
</ParamField>
|
||||||
|
|
||||||
|
<ParamField query="CORS_ALLOWED_METHODS" type="string" optional>
|
||||||
|
Array of HTTP methods allowed for CORS requests.
|
||||||
|
|
||||||
|
Defaults to reflecting the headers specified in the request's Access-Control-Request-Headers header.
|
||||||
|
</ParamField>
|
||||||
|
|
||||||
|
|
||||||
## Data Layer
|
## Data Layer
|
||||||
|
|
||||||
The platform utilizes Postgres to persist all of its data and Redis for caching and backgroud tasks
|
The platform utilizes Postgres to persist all of its data and Redis for caching and backgroud tasks
|
||||||
@@ -72,7 +93,8 @@ DB_READ_REPLICAS=[{"DB_CONNECTION_URI":""}]
|
|||||||
</Expandable>
|
</Expandable>
|
||||||
</ParamField>
|
</ParamField>
|
||||||
|
|
||||||
## Email service
|
|
||||||
|
## Email Service
|
||||||
|
|
||||||
Without email configuration, Infisical's core functions like sign-up/login and secret operations work, but this disables multi-factor authentication, email invites for projects, alerts for suspicious logins, and all other email-dependent features.
|
Without email configuration, Infisical's core functions like sign-up/login and secret operations work, but this disables multi-factor authentication, email invites for projects, alerts for suspicious logins, and all other email-dependent features.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user