6.40HttpContextForwardOptions 配置选项

创建于 2026 年 8 月 17 日约 4 分钟读完

HttpContextForwardOptions 类型专门用于配置 HttpContext 的转发行为。您可以在项目的 Startup.csProgram.cs 文件中注册并配置该服务:

cs
// 在 HttpRemote 服务中注册services.AddHttpRemote(builder => {})    .ConfigureForwardOptions(options =>  // .ConfigureForwardOptions((options, serviceProvider) =>    {        // 在此处添加自定义配置    });// 在 services 中注册services.Configure<HttpContextForwardOptions>(options =>{    // 在此处添加自定义配置});

此外,您也可以手动创建 HttpContextForwardOptions 实例,并在进行转发时将其传入:

cs
httpContext.ForwardAsResult("https://furion.net", forwardOptions: new HttpContextForwardOptions{    // 在此处添加自定义配置});

HttpContextForwardOptions 包含以下属性:

  • 属性
    • AllowedHosts:允许转发的目标主机白名单(ICollection<string>? 类型)。
      用于防范 服务端请求伪造(SSRF 攻击。仅当目标地址的主机(含端口、协议)与列表中的某一项匹配时,转发才会被允许。
      支持的格式(匹配均忽略大小写):
      • "furion.net" – 仅主机名,匹配任意协议(http/https)的默认端口(80/443)。
      • "furion.net:8080" – 主机+端口,匹配任意协议的指定端口。
      • "furion.net:*" – 主机+端口通配符,匹配任意协议下的任意端口。
      • "https://furion.net" – 协议+主机,只匹配指定协议的默认端口。
      • "http://furion.net:8080" – 协议+主机+端口,精确匹配。
      • "https://furion.net:*" – 协议+主机+端口通配符,只匹配指定协议的任意端口。
      • "*" – 全局通配符,允许任意主机和协议(完全绕过验证,高风险)。
        若未配置或为空,所有通过 X-Forward-To 请求头指定的目标地址都将被拒绝,以防止未经授权的转发。建议尽可能使用精确规则,仅对完全可信的来源开放通配符。
    • WithQueryParameters:是否转发查询参数(URL 参数),默认值为 truebool 类型)。
    • WithRequestHeaders:是否转发请求标头,默认值为 truebool 类型)。
    • WithResponseStatusCode:是否转发响应状态码,默认值为 truebool 类型)。
    • WithResponseHeaders:是否转发响应标头,默认值为 truebool 类型)。
    • WithResponseContentHeaders:是否转发响应内容标头,默认值为 truebool 类型)。
    • ResetHostRequestHeader:是否重新设置 Host 请求标头,默认值为 falsebool 类型)。
    • IgnoreQueryParameters:忽略在转发时需要跳过的查询参数(URL 参数)列表(string[]? 类型)。
    • IgnoreRequestHeaders:忽略在转发时需要跳过的请求标头列表(string[]? 类型)。
    • IgnoreResponseHeaders:忽略在转发时需要跳过的响应标头列表(string[]? 类型)。
    • OnForward:用于在转发响应之前执行自定义操作(Action<HttpContext, HttpResponseMessage> 类型)。