diff --git a/src/Config.zig b/src/Config.zig index 556baf9f0..0bb03abdb 100644 --- a/src/Config.zig +++ b/src/Config.zig @@ -243,12 +243,15 @@ pub const ExperimentalFeatures = packed struct(u2) { serviceworker: bool = false, }; +pub const DisabledFeatures = packed struct(u1) { + cors: bool = false, +}; + /// Common CLI args. const CommonOptions = .{ .{ .name = "obey_robots", .type = bool }, .{ .name = "robot_store_entry_limit", .type = ?u32, .default = 1000 }, .{ .name = "cors_store_entry_limit", .type = ?u32, .default = 1000 }, - .{ .name = "disable_cors", .type = bool, .default = false }, .{ .name = "proxy_bearer_token", .type = ?[:0]const u8 }, .{ .name = "http_proxy", .type = ?[:0]const u8 }, .{ .name = "http_max_concurrent", .type = ?u8 }, @@ -284,6 +287,7 @@ const CommonOptions = .{ .{ .name = "disable_subframes", .type = bool, .deprecated = "subframes are now disabled by default, use \"--load-resources iframe\" to enable" }, .{ .name = "disable_workers", .type = bool, .deprecated = "workers are now disabled by default, use \"--load-resources worker\" to enable" }, .{ .name = "enable_external_stylesheets", .type = bool, .deprecated = "use \"--load-resources stylesheet\" to enable" }, + .{ .name = "disable_features", .type = DisabledFeatures, .default = DisabledFeatures{} }, .{ .name = "experimental_features", .type = ExperimentalFeatures, .default = ExperimentalFeatures{} }, .{ .name = "load_resources", .type = LoadResources, .default = LoadResources{} }, .{ .name = "v8_flags_unsafe", .type = ?[]const u8 }, @@ -555,7 +559,7 @@ pub fn tlsVerifyHost(self: *const Config) bool { pub fn obeyCors(self: *const Config) bool { return switch (self.mode) { - inline .serve, .fetch, .mcp, .agent => |opts| opts.disable_cors == false, + inline .serve, .fetch, .mcp, .agent => |opts| opts.disable_features.cors == false, else => unreachable, }; } diff --git a/src/help.zon b/src/help.zon index bbb000d08..d00ecca73 100644 --- a/src/help.zon +++ b/src/help.zon @@ -409,9 +409,11 @@ \\ --cors-store-entry-limit \\ Maximum number of entries kept in the CorsStore. 0 means no limit. \\ Defaults to 1000. - \\ --disable-cors - \\ Skip CORS checks on fetch/XHR requests. - \\ Defaults to false. + \\ --disable-features + \\ Disable a feature that is on by default. Can be passed multiple times. + \\ Defaults to none disabled. + \\ Allowed values: + \\ cors Skip CORS checks on fetch/XHR requests. \\ --experimental-features \\ Enable an experimental, unstable feature. Can be passed multiple times. \\ Behavior may change or be removed without notice.