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

Azure应用网关后端重定向返回HTTP而非HTTPS的优雅方案咨询

解决Blazor应用通过Azure应用网关重定向时协议错误的优雅方案

方案1:配置ASP.NET Core识别反向代理的真实协议

Blazor应用运行在虚拟机的HTTP服务上,无法感知前端通过Azure应用网关使用HTTPS访问,因此生成的重定向链接仍采用HTTP。只需让应用识别网关传递的X-Forwarded-Proto标头,即可生成正确的HTTPS重定向:

在Program.cs中添加转发头配置:

var builder = WebApplication.CreateBuilder(args);

// 配置转发头,信任Azure应用网关的代理标头
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
    options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
    // 可选:添加Azure应用网关的IP到信任列表,避免恶意标头攻击(若网关IP固定)
    // options.KnownProxies.Add(IPAddress.Parse("网关IP"));
});

var app = builder.Build();

// 必须在UseAuthentication、UseAuthorization之前调用
app.UseForwardedHeaders();

// 后续中间件配置
app.UseAuthentication();
app.UseAuthorization();

同时可在appsettings.json中启用自动转发头简化配置:

{
  "ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true"
}

方案2:通过Azure应用网关重写响应头直接修正协议

若不想修改应用代码,可在网关层面配置重写规则,直接将响应中Location头的http://替换为https://:

  1. 进入Azure应用网关的规则页面,点击重写规则集新建规则集。
  2. 添加重写规则,选择响应头重写类型。
  3. 设置目标头为Location,动作选择查找并替换:
    • 查找内容:正则表达式^http://
    • 替换内容:https://
  4. 将该重写规则集关联到对应的路由规则上。

此方案可让网关自动修正所有后端返回的HTTP重定向链接,避免二次重定向的问题。

方案3:结合应用端强制HTTPS配置

在配置转发头的基础上,启用应用的HTTPS重定向和HSTS,确保所有生成的链接均为HTTPS:

在Program.cs中添加:

// 需在UseForwardedHeaders之后调用
app.UseHsts();
app.UseHttpsRedirection();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:35:39