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

在Eleventy中配置HSTS响应头失败,求可行解决方案

为Eleventy站点添加HSTS响应头的可行方案

1. 部署平台直接配置(最可靠)

Eleventy生成静态文件,响应头通常由部署平台控制,直接在平台配置是最稳妥的方式:

  • Netlify:在根目录创建netlify.toml,写入以下内容:
    [[headers]]
      for = "/*"
      [headers.values]
        Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
    
  • Vercel:创建vercel.json文件,配置如下:
    {
      "headers": [
        {
          "source": "/(.*)",
          "headers": [
            {
              "key": "Strict-Transport-Security",
              "value": "max-age=31536000; includeSubDomains; preload"
            }
          ]
        }
      ]
    }
    
  • GitHub Pages:需通过Cloudflare代理站点,在Cloudflare后台「规则」-「转换规则」-「修改响应头」中新增规则,添加Strict-Transport-Security头并填入目标值。

2. 本地开发调试的中间件修正

如果之前的Eleventy中间件未生效,大概率是配置写法错误,以下是Eleventy v2+的正确配置:
在eleventy.js中添加:

module.exports = function(eleventyConfig) {
  eleventyConfig.setServerOptions({
    middleware: [
      function(req, res, next) {
        res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
        next();
      }
    ]
  });
};

注意:本地开发需启用HTTPS(执行npx @11ty/eleventy --serve --https),否则浏览器会忽略HSTS头。

3. 修正_headers文件的使用方式

若你用Netlify等支持_headers的平台,需确保文件被正确复制到输出目录:

  1. 在eleventy.js中添加复制规则:
    eleventyConfig.addPassthroughCopy("_headers");
    
  2. _headers文件内容格式如下:
    /*
      Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
    

4. 插件配置(辅助生成平台配置文件)

使用eleventy-plugin-response-headers插件自动生成适配平台的响应头配置:

  1. 安装插件:npm install eleventy-plugin-response-headers --save-dev
  2. 在eleventy.js中配置:
    const responseHeadersPlugin = require('eleventy-plugin-response-headers');
    module.exports = function(eleventyConfig) {
      eleventyConfig.addPlugin(responseHeadersPlugin, {
        headers: {
          'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload'
        }
      });
    };
    

该插件会自动生成对应平台的配置文件(如Netlify的_headers、Vercel的vercel.json),需部署后验证生效。

验证方法

部署完成后,可通过两种方式确认:

  • 打开浏览器开发者工具「网络」面板,查看请求的响应头是否包含Strict-Transport-Security;
  • 在终端执行curl -I https://你的域名,查看输出的响应头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:02:44