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

如何在Azure App Service/Web App强制仅HTTPS访问(阻断HTTP而非重定向)

Azure App Service 实现仅响应HTTPS请求的可行方案

方案1:使用应用服务自定义访问规则(无需修改代码,推荐)

你可以在Azure门户的App Service配置页,找到「网络」选项下的「访问限制」功能,添加自定义规则:

  • 匹配条件:请求协议为 HTTP
  • 操作:选择「拒绝」,设置返回状态码为 400 Bad Request 或者 403 Forbidden
  • 优先级设置为最高(比如10),保证优先匹配所有HTTP请求
    配置完成后所有访问80端口的HTTP请求会被Azure前端节点直接拦截返回错误,不会到达你的应用代码,也不会触发重定向。

方案2:应用代码层拦截(适配所有部署环境)

如果不想修改Azure云侧配置,可以在ASP.NET Core应用中添加中间件,在请求管道的最前面拦截HTTP请求:

// Program.cs 中,放在所有中间件注册的最前面
app.Use(async (context, next) =>
{
    if (!context.Request.IsHttps)
    {
        context.Response.StatusCode = StatusCodes.Status400BadRequest;
        await context.Response.CompleteAsync();
        return;
    }
    await next();
});

该方案无需绑定域名,所有非HTTPS请求都会被直接拒绝,不受App Service的「HTTPS Only」开关影响,也不需要同步维护自定义域名配置。

方案3:IIS配置拦截(仅适用于Windows托管的App Service)

如果你的应用托管在Windows环境的App Service上,可以在站点根目录的Web.config中添加规则,直接拦截HTTP请求:

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Reject HTTP" stopProcessing="true">
        <match url=".*" />
        <conditions>
          <add input="{HTTPS}" pattern="off" />
        </conditions>
        <action type="CustomResponse" statusCode="400" statusReason="Bad Request" statusDescription="Only HTTPS requests are allowed" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

注意配置完成后需要关闭App Service的「HTTPS Only」开关,避免云侧先触发重定向,导致自定义规则不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:11