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

如何在Azure Functions中启用HSTS?配置后未出现响应头问题

解决Azure Function App HSTS配置不生效问题

问题描述

我希望在Azure Function App上启用HTTP严格传输安全(HSTS)。已在函数应用的host.json文件中添加HSTS配置,但未收到Strict-Transport-Security响应头。我的host.json内容如下:

{
  "version": "2.0",
  "extensions": {
    "http": {
      "routePrefix": "api",
      "hsts": {
        "isEnabled": true,
        "includeSubDomains": true,
        "maxAge": "365"
      }
    }
  }
}

排查与修复步骤

1. 确认函数运行模式

host.json中的HSTS配置仅对**隔离进程模式(Isolated Process)**生效,进程内模式(In-Process)不支持该配置。

  • 检查运行模式:在Azure门户函数应用的「配置」-「常规设置」中,查看「运行时堆栈」对应的进程模式。
  • 若为进程内模式,需通过代码手动添加头信息,或借助Azure Front Door、Application Gateway等前端服务配置HSTS。

2. 修正maxAge格式

HSTS的maxAge要求为秒数(或符合HTTP规范的格式),将配置中的字符串"365"改为数字格式的秒数:

"hsts": {
  "isEnabled": true,
  "includeSubDomains": true,
  "maxAge": 31536000
}

3. 检查前端代理是否覆盖头信息

如果函数应用前端配置了Front Door、CDN或网关服务,这些服务可能会移除或覆盖HSTS头。需在前端服务中同步配置HSTS,或确保其不会拦截函数返回的响应头。

4. 确保通过HTTPS访问

HSTS头仅在HTTPS请求中返回,必须使用https://协议访问函数接口,HTTP请求不会触发该头。

5. 重启函数应用

修改host.json后,需在Azure门户函数应用概览页点击「重启」,让配置生效后再测试。

进程内模式手动添加HSTS头示例(C#)

如果使用进程内模式,可在函数代码中直接添加响应头:

[FunctionName("MyFunction")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
    req.HttpContext.Response.Headers.Add("Strict-Transport-Security", "max-age=31536000; includeSubDomains");
    return new OkObjectResult("Hello World");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:41:14