diff --git a/server/lib/blueprints/exportResourceBlueprint.ts b/server/lib/blueprints/exportResourceBlueprint.ts index 81119bd82..7b5d4c68e 100644 --- a/server/lib/blueprints/exportResourceBlueprint.ts +++ b/server/lib/blueprints/exportResourceBlueprint.ts @@ -444,14 +444,18 @@ export async function buildPublicResourceBlueprintConfig( } if (resource.requestHeaders) { try { - resourceConfig.requestHeaders = JSON.parse(resource.requestHeaders); + resourceConfig["request-headers"] = JSON.parse( + resource.requestHeaders + ); } catch { // ignore malformed stored headers } } if (resource.responseHeaders) { try { - resourceConfig.responseHeaders = JSON.parse(resource.responseHeaders); + resourceConfig["response-headers"] = JSON.parse( + resource.responseHeaders + ); } catch { // ignore malformed stored headers } diff --git a/server/lib/blueprints/publicResources.ts b/server/lib/blueprints/publicResources.ts index d25433f16..ca4b7c2e8 100644 --- a/server/lib/blueprints/publicResources.ts +++ b/server/lib/blueprints/publicResources.ts @@ -267,18 +267,25 @@ export async function updatePublicResources( resourceData.ssl == undefined || resourceData.ssl == null ? true : resourceData.ssl; - // `headers` is a deprecated alias for `requestHeaders` + // `headers` and `requestHeaders` are deprecated aliases for + // `request-headers`; `responseHeaders` for `response-headers` const mergedRequestHeaders = [ ...(resourceData.headers ?? []), - ...(resourceData.requestHeaders ?? []) + ...(resourceData.requestHeaders ?? []), + ...(resourceData["request-headers"] ?? []) ]; const requestHeaders = mergedRequestHeaders.length > 0 ? JSON.stringify(mergedRequestHeaders) : null; - const responseHeaders = resourceData.responseHeaders?.length - ? JSON.stringify(resourceData.responseHeaders) - : null; + const mergedResponseHeaders = [ + ...(resourceData.responseHeaders ?? []), + ...(resourceData["response-headers"] ?? []) + ]; + const responseHeaders = + mergedResponseHeaders.length > 0 + ? JSON.stringify(mergedResponseHeaders) + : null; if (resourceData.policy) { const isLicensed = await isLicensedOrSubscribed( diff --git a/server/lib/blueprints/types.ts b/server/lib/blueprints/types.ts index 8a6ba1088..64d6392a7 100644 --- a/server/lib/blueprints/types.ts +++ b/server/lib/blueprints/types.ts @@ -350,9 +350,11 @@ export const PublicResourceSchema = z "load-balancing-strategy": z .enum(["wrr", "p2c", "hrw", "leasttime"]) .optional(), - headers: z.array(HeaderSchema).optional(), // deprecated alias for requestHeaders - requestHeaders: z.array(HeaderSchema).optional(), - responseHeaders: z.array(HeaderSchema).optional(), + "request-headers": z.array(HeaderSchema).optional(), + "response-headers": z.array(HeaderSchema).optional(), + headers: z.array(HeaderSchema).optional(), // deprecated alias for request-headers + requestHeaders: z.array(HeaderSchema).optional(), // deprecated alias for request-headers + responseHeaders: z.array(HeaderSchema).optional(), // deprecated alias for response-headers rules: z.array(RuleSchema).optional(), maintenance: MaintenanceSchema.optional(), mtls: MtlsSchema.optional(), // deprecated alias for auth.mtls