close
  • 简体中文
  • server

    • 类型: RsdoctorServerConfig
    • 可选: true
    • 默认值: {}

    配置 Rsdoctor 报告服务。

    port

    • 类型: number
    • 可选: true
    • 默认值: random(3000, 8999)

    配置 Rsdoctor 报告服务的端口。

    如果没有配置 server.port,Rsdoctor 会使用顶层 port 配置。如果两个配置同时存在,server.port 优先级更高。

    new RsdoctorRspackPlugin({
      server: {
        port: 3001,
      },
    });

    cors

    • 类型: boolean | RsdoctorServerCorsOptions
    • 可选: true
    • 默认值: 只允许本地来源。

    配置 Rsdoctor 报告服务的 CORS 响应头。

    默认情况下,Rsdoctor 只允许以下本地来源:

    • http://localhosthttps://localhost
    • localhost 子域名,例如 http://foo.localhost
    • http://127.0.0.1https://127.0.0.1
    • http://[::1]https://[::1]

    以上默认本地来源都可以携带任意端口。

    可选值

    • false:关闭 CORS 中间件。
    • true:使用 cors 包的默认配置。
    • object:传递给 cors 中间件的配置对象。如果没有配置 origin,Rsdoctor 会保留默认的本地来源策略。如果配置了 origin,它会替换默认的本地来源策略。

    Rsdoctor 仍然会单独校验本地请求 Host。cors 配置只控制 CORS 中间件行为和响应头。

    示例

    允许一个自定义来源:

    new RsdoctorRspackPlugin({
      server: {
        cors: {
          origin: 'https://example.com',
          credentials: true,
        },
      },
    });

    保留默认本地来源策略,并添加其他 CORS 选项:

    new RsdoctorRspackPlugin({
      server: {
        cors: {
          credentials: true,
          methods: ['GET', 'POST', 'OPTIONS'],
        },
      },
    });

    使用 cors 包的默认配置:

    new RsdoctorRspackPlugin({
      server: {
        cors: true,
      },
    });

    类型定义

    interface RsdoctorServerConfig {
      port?: number;
      cors?: boolean | RsdoctorServerCorsOptions;
    }
    
    type RsdoctorServerCorsStaticOrigin =
      | boolean
      | string
      | RegExp
      | Array<boolean | string | RegExp>;
    
    type RsdoctorServerCorsOrigin =
      | RsdoctorServerCorsStaticOrigin
      | ((
          requestOrigin: string | undefined,
          callback: (
            err: Error | null,
            origin?: RsdoctorServerCorsStaticOrigin,
          ) => void,
        ) => void);
    
    interface RsdoctorServerCorsOptions {
      origin?: RsdoctorServerCorsOrigin;
      methods?: string | string[];
      allowedHeaders?: string | string[];
      exposedHeaders?: string | string[];
      credentials?: boolean;
      maxAge?: number;
      preflightContinue?: boolean;
      optionsSuccessStatus?: number;
    }