boolean | import('cors').CorsOptionsconst defaultAllowedOrigins =
/^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/;
const defaultOptions = {
// 默认允许:
// - localhost
// - 127.0.0.1
// - [::1]
origin: defaultAllowedOrigins,
};>= 1.1.11为开发服务器和预览服务器配置 CORS 选项,基于 cors 中间件实现。
object:启用 CORS 并使用指定的选项。true:启用 CORS 并使用默认选项(允许所有 origin,不推荐)。false:禁用 CORS。
使用 cors: true 或 cors.origin: '*' 会使你的开发服务器对所有 origin 开放,这可能会危及源代码的安全性,建议使用 origin 选项指定一个受信任 origins 的白名单。
export default {
server: {
cors: {
// 配置 `Access-Control-Allow-Origin` CORS 响应头
origin: 'https://example.com',
},
},
};// `defaultAllowedOrigins` 为 Rsbuild 默认的 origin 值
import { defaultAllowedOrigins } from '@rsbuild/core';
export default {
server: {
cors: {
origin: [defaultAllowedOrigins, 'https://example.com'],
},
},
};const isDev = process.env.NODE_ENV === 'development';
export default {
server: {
cors: isDev ? { origin: 'https://example.com' } : false,
},
};export default {
server: {
cors: false,
},
};export default {
server: {
// 等价于 `{ origin: '*' }`
cors: true,
},
};cors 选项可以是一个对象,与 cors 中间件的选项相同。
默认配置等同于:
const defaultCorsOptions = {
origin: '*',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
preflightContinue: false,
optionsSuccessStatus: 204,
};type StaticOrigin =
| boolean
| string
| RegExp
| Array<boolean | string | RegExp>;
type CustomOrigin = (
requestOrigin: string | undefined,
callback: (err: Error | null, origin?: StaticOrigin) => void,
) => void;
type Origin = StaticOrigin | CustomOrigin;origin 选项用于配置 Access-Control-Allow-Origin 头:
export default {
server: {
cors: {
origin: 'https://example.com',
},
},
};通过数组指定多个允许的 origin:
export default {
server: {
cors: {
origin: [
/^https?:\/\/(?:(?:[^:]+\.)?localhost|127\.0\.0\.1|\[::1\])(?::\d+)?$/,
'https://example.com',
],
},
},
};使用正则表达式来允许所有匹配的 origin:
export default {
server: {
cors: {
origin: /\.example\.com$/,
},
},
};将 origin 设置为函数,可以动态决定允许的 origin,函数接收两个参数:
origin:当前请求的 origin,undefined 表示该请求没有 origin。callback:一个回调函数,用于设置允许的 origin。export default {
server: {
cors: {
origin: (origin, callback) => {
// loadMyOrigins is an example call to load a list of origins
loadMyOrigins((error, origins) => {
callback(error, origins);
});
},
},
},
};