boolean | import('cors').CorsOptions
const 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);
});
},
},
},
};