mirror of
https://github.com/nocobase/nocobase.git
synced 2026-09-19 10:54:38 +08:00
Merge branch 'main' into next
# Conflicts: # packages/core/server/src/helper.ts
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
import { resolveCorsOrigin } from '../helper';
|
||||
|
||||
describe('resolveCorsOrigin', () => {
|
||||
const origin = 'https://portal.example.com';
|
||||
|
||||
afterEach(() => {
|
||||
delete process.env.CORS_ORIGIN_WHITELIST;
|
||||
});
|
||||
|
||||
it('allows every origin when the whitelist contains an asterisk', () => {
|
||||
process.env.CORS_ORIGIN_WHITELIST = '*';
|
||||
|
||||
expect(resolveCorsOrigin({ get: () => origin })).toBe(origin);
|
||||
});
|
||||
|
||||
it('allows an asterisk alongside explicit origins', () => {
|
||||
process.env.CORS_ORIGIN_WHITELIST = 'https://admin.example.com, *';
|
||||
|
||||
expect(resolveCorsOrigin({ get: () => origin })).toBe(origin);
|
||||
});
|
||||
|
||||
it('keeps exact matching when the whitelist does not contain an asterisk', () => {
|
||||
process.env.CORS_ORIGIN_WHITELIST = 'https://admin.example.com';
|
||||
|
||||
expect(resolveCorsOrigin({ get: () => origin })).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -51,12 +51,13 @@ function isWhitelistedCorsOrigin(ctx: any) {
|
||||
return isTrustedOrigin(ctx, origin);
|
||||
}
|
||||
|
||||
return whitelist.has(origin);
|
||||
return whitelist.has('*') || whitelist.has(origin);
|
||||
}
|
||||
|
||||
function resolveCorsOrigin(ctx: any) {
|
||||
export function resolveCorsOrigin(ctx: any) {
|
||||
const origin = ctx.get('origin');
|
||||
const disallowNoOrigin = process.env.CORS_DISALLOW_NO_ORIGIN === 'true';
|
||||
const whitelist = getCorsWhitelist();
|
||||
|
||||
if (!origin && disallowNoOrigin) {
|
||||
return false;
|
||||
@@ -66,7 +67,7 @@ function resolveCorsOrigin(ctx: any) {
|
||||
return origin;
|
||||
}
|
||||
|
||||
return getCorsWhitelist() ? false : origin;
|
||||
return whitelist ? false : origin;
|
||||
}
|
||||
|
||||
export function registerMiddlewares(app: Application, options: ApplicationOptions) {
|
||||
|
||||
Reference in New Issue
Block a user