diff --git a/ZR.Admin.WebApi/Extensions/SwaggerExtension.cs b/ZR.Admin.WebApi/Extensions/SwaggerExtension.cs index ce97d989cf27148a3905c7e6bc1df915a4fa20c5..d535b1b7f3389d5391bc8bd4431d463bb52c2ea9 100644 --- a/ZR.Admin.WebApi/Extensions/SwaggerExtension.cs +++ b/ZR.Admin.WebApi/Extensions/SwaggerExtension.cs @@ -19,7 +19,15 @@ namespace ZR.Admin.WebApi.Extensions c.RouteTemplate = "swagger/{documentName}/swagger.json"; c.PreSerializeFilters.Add((swaggerDoc, httpReq) => { - var url = $"{httpReq.Scheme}://{httpReq.Host.Value}"; + // 先获取请求的协议,如果是反向代理环境,优先使用 X-Forwarded-Proto 头部 + var scheme = httpReq.Headers["X-Forwarded-Proto"].ToString(); + if (string.IsNullOrEmpty(scheme)) + { + scheme = httpReq.Scheme; // 如果 X-Forwarded-Proto 不存在,使用实际的请求协议 + } + + var url = $"{scheme}://{httpReq.Host.Value}"; + var referer = httpReq.Headers["Referer"].ToString(); if (referer.Contains(GlobalConstant.DevApiProxy)) url = referer[..(referer.IndexOf(GlobalConstant.DevApiProxy, StringComparison.InvariantCulture) + GlobalConstant.DevApiProxy.Length - 1)];