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

如何在Swagger UI中隐藏固定请求头并自动发送硬编码值?

实现Swagger自动发送硬编码自定义请求头(禁止用户修改)

要实现自定义请求头硬编码自动发送、不让用户在Swagger UI中修改或输入,需要从隐藏参数显示和自动注入请求头两方面入手,以下是具体实现方案:

1. 移除Swagger UI中的请求头输入项

你原来的MyCustomTokenHeader实现会把请求头作为可输入参数展示在Swagger UI里,这不符合需求,直接注释或删除对应的OperationFilter配置即可,避免用户看到这个请求头的输入框。

2. 自动注入固定请求头

通过拦截Swagger UI的请求,在发送前自动添加固定值的请求头,有两种常用方式:

方式一:前端脚本拦截(推荐)

在Swagger UI配置中注入自定义JavaScript脚本,拦截请求并添加固定请求头:

首先,在项目的wwwroot目录下创建swagger-custom.js文件,写入以下代码:

(function() {
    // 保存原生fetch方法
    const originalFetch = window.fetch;
    window.fetch = function(resource, options) {
        options = options || {};
        options.headers = options.headers || {};
        // 硬编码添加自定义请求头
        options.headers['Header-Parameter'] = 'my-default-header-value';
        return originalFetch(resource, options);
    };
})();

然后在Swagger配置中引入这个脚本(以.NET 6+为例,在Program.cs中):

builder.Services.AddSwaggerGen(c =>
{
    // 保留你的Swagger文档配置,比如版本、标题等
    // 注释或删除原来的OperationFilter配置:c.OperationFilter<MyCustomTokenHeader>();
});

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API名称 V1");
    // 注入自定义脚本
    c.InjectJavascript("/swagger-custom.js");
});

方式二:后端中间件拦截

如果希望在后端统一处理,可添加全局中间件,给Swagger相关请求自动添加请求头:

app.Use(async (context, next) =>
{
    // 仅对Swagger路径下的请求添加头
    if (context.Request.Path.StartsWithSegments("/swagger"))
    {
        context.Request.Headers.TryAdd("Header-Parameter", "my-default-header-value");
    }
    await next();
});

效果说明

完成配置后,用户在Swagger UI中看不到这个自定义请求头的输入项,点击"Try it out"发送请求时,系统会自动带上硬编码的Header-Parameter请求头,用户无法修改该值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 11:05:55