You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 如何为 Swagger UI 所有请求配置全局自动生效请求头

解决方案

方案1:使用安全定义配置全局请求头(推荐,和授权头效果完全一致)

该方案可以实现仅在Swagger UI顶部填写一次请求头,自动对所有接口请求生效,无需为每个接口单独配置参数。
在Program.cs(或Startup.cs的ConfigureServices方法)中修改Swagger服务配置:

builder.Services.AddSwaggerGen(options =>
{
    // 定义全局请求头规则
    options.AddSecurityDefinition("VeryImportantHeader", new OpenApiSecurityScheme
    {
        Name = "VeryImportantHeader",
        Type = SecuritySchemeType.ApiKey,
        In = ParameterLocation.Header,
        Description = "全局必填的自定义请求头",
        Scheme = "ApiKeyScheme"
    });

    // 将请求头应用到所有接口
    var scheme = new OpenApiSecurityScheme
    {
        Reference = new OpenApiReference
        {
            Type = ReferenceType.SecurityScheme,
            Id = "VeryImportantHeader"
        }
    };
    options.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        { scheme, Array.Empty<string>() }
    });

    // 你之前使用的IOperationFilter实现可以删除
});

配置完成后打开Swagger UI,右上角会出现「Authorize」按钮,点击后输入对应头值并确认,后续所有接口发起请求时都会自动携带该请求头。

方案2:自定义Swagger请求拦截器(适合有自定义逻辑的场景)

如果需要更灵活的控制逻辑,比如自定义输入位置、动态修改头值,可以使用Swagger UI的请求拦截器实现,配置如下:
在Program.cs的中间件配置部分修改Swagger UI配置:

app.UseSwaggerUI(options =>
{
    // 注入请求拦截器,所有请求发送前都会自动添加指定头
    options.Interceptors.RequestInterceptor = 
        """
        function(request) {
            // 示例从localStorage取值,你可以自行扩展全局输入控件将值存入localStorage
            request.headers['VeryImportantHeader'] = window.localStorage.getItem('VeryImportantHeaderValue');
            return request;
        }
        """;
});

如果需要为部分接口排除全局头,可以自定义[SkipGlobalHeader]标记特性,结合IOperationFilter过滤对应接口的安全要求即可。

内容的提问来源于stack exchange,提问作者Sergei B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 18:06:03