asp.net-core - 在 swagger 中添加代理授权 header

标签 asp.net-core swagger-ui swashbuckle

我需要使用 .net core 在 swagger ui 上添加特定 header 。有没有办法包含这样的标题?

已经尝试过:

  • 实现 IOperationFilter:

    public void Apply(Operation operation, OperationFilterContext context)
    {
        if (operation.Parameters == null)
            operation.Parameters = new List<IParameter>();
    
        if (operation.Parameters.All(p => p.Name != "Proxy-Authorization"))
        {
            operation.Parameters.Add(new NonBodyParameter
            {
                Name = "Proxy-Authorization",
                In = "header",
                Description = "Proxy-Authorization token",
                Required = true,
                Type = "string"
            });
        }
    }
    
  • 添加安全定义:

    options.AddSecurityDefinition("Proxy-Authorization", new ApiKeyScheme()
    {
        In = "header",
        Description = "Please insert Proxy Authorization Secret into field",
        Name = "Proxy-Authorization",
        Type = "apiKey"
    });
    

两者都不起作用。当我更改 header 名称时,一切正常,但此特定 header 会从调用中删除。

您遇到过这个问题吗?怎么解决这个问题?

最佳答案

来自:https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name

禁止的 header 名称是不能以编程方式修改的 HTTP header 名称;具体来说,是 HTTP 请求 header 名称。

...

禁止 header 名称以 Proxy- 或 Sec- 开头,或由以下之一组成:

  • 接受字符集
  • 接受编码
  • 访问控制请求 header
  • 访问控制请求方法
  • 连接
  • 内容长度
  • Cookie
  • Cookie2
  • 日期
  • DNT
  • 预计
  • 主持人
  • 保持事件状态
  • 起源
  • 代理-
  • 秒-
  • 推荐人
  • TE
  • 预告片
  • 传输编码
  • 升级
  • 通过

关于asp.net-core - 在 swagger 中添加代理授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509258/

相关文章:

c# - 如何在 ASP.NET Core Swagger (Swashbuckle.AspNetCore) 中定义 Controller 描述?

c# - 升级到 3.0 后 ASP.NET Core 身份验证中断

asp.net - 如何在 ASP.NET Core-SPA 应用程序上禁用服务器端渲染?

api - 使用 Swagger UI 设置 Api 版本

asp.net-core - 如何在 Swagger UI 中包含 X-XSRF-TOKEN header ?

swagger - 无法在 Swagger 中注入(inject) Javascript

c# - 如何在 ASP.NET 5/vNext/Core 中使用 Elmah?

asp.net-core - 为来自 ASP.NET Core 的所有 JSON 响应添加前缀以防止 XSSI 攻击

c# - 在架构定义中找不到类型名称

swagger - 模块化: unbundling swagger-ui from swashbuckle