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

.NET Core中如何判断请求是否来自Swagger UI

判断请求是否来自Swagger UI的几种实用方案

1. 检查请求的Referer/Origin头

Swagger UI发起请求时,请求头里的Referer会指向Swagger UI的页面地址(比如你的域名下的/swagger-ui.html或/swagger/index.html)。服务端可以通过校验这个字段判断来源:

Java Spring Boot 示例:

@GetMapping("/your-api")
public ResponseEntity<?> yourApi(HttpServletRequest request) {
    String referer = request.getHeader("Referer");
    boolean isFromSwagger = referer != null && referer.contains("/swagger-ui/"); // 根据你的Swagger路径调整
    if (isFromSwagger) {
        // 处理Swagger来源的请求
    } else {
        // 处理其他客户端的请求
    }
    // ...
}

Node.js Express 示例:

app.get('/your-api', (req, res) => {
    const referer = req.get('Referer');
    const isFromSwagger = referer && referer.includes('/swagger-ui/');
    if (isFromSwagger) {
        // Swagger请求逻辑
    } else {
        // 其他客户端逻辑
    }
});

2. 校验User-Agent头

Swagger UI的请求User-Agent通常包含Swagger UI标识,可作为辅助判断(注意:这个字段可能被伪造,仅作补充校验):

String userAgent = request.getHeader("User-Agent");
boolean isFromSwagger = userAgent != null && userAgent.contains("Swagger UI");

3. 给Swagger UI添加自定义请求头(最可靠方案)

通过配置Swagger,让所有从Swagger UI发起的请求自动携带一个自定义标识头,比如X-From-Swagger: true,服务端直接校验这个头即可:

Spring Boot Swagger 3.x 配置示例:

@Configuration
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.OAS_30)
                .globalRequestParameters(Arrays.asList(
                        new RequestParameterBuilder()
                                .name("X-From-Swagger")
                                .description("标识请求来自Swagger UI")
                                .in(ParameterType.HEADER)
                                .required(false)
                                .model(new ModelBuilder().build())
                                .defaultValue("true")
                                .build()
                ))
                // 其他Swagger配置...
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.your.package"))
                .paths(PathSelectors.any())
                .build();
    }
}

服务端校验:

String swaggerFlag = request.getHeader("X-From-Swagger");
boolean isFromSwagger = "true".equals(swaggerFlag);

内容的提问来源于stack exchange,提问作者Hậu tran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:27:09