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

关于vercel.json中headers.source字段格式的技术问询

Vercel Headers配置中source字段的格式规范解析

Vercel的source字段并不是纯正则表达式,而是混合了三种匹配语法的规则,下面逐个拆解:

  • 精确路径匹配
    像"/service-worker.js"这种写法,是完全精确匹配,只有当请求路径和字符串完全一致时才会触发对应的header规则,没有任何通配逻辑。

  • 正则表达式匹配
    以/(.*)为代表,这种是标准的JavaScript正则表达式,被包裹在斜杠/之间。(.*)会匹配所有路径,所以示例里所有请求都会应用那几个安全header。你也可以写更具体的正则,比如/api/(.*)来匹配所有以/api/开头的路径。

  • 参数化通配符匹配
    就是你疑惑的/:path*这类写法,属于Vercel专属的路径参数语法:

    • :path单独使用时,匹配单个路径段(比如/posts/:id会匹配/posts/123,但不匹配/posts/123/comments)
    • 后缀加*后,:path*会匹配任意数量的路径段(包括多层嵌套),效果等同于正则的(.*),但写法更简洁。这种语法常和has条件配合,比如示例里只有当URL带有authorized查询参数时,才会触发对应的header规则。

原配置示例

{
  "headers": [
    {
      "source": "/service-worker.js",
      "headers": [
        {
          "key": "Cache-Control",
          "value": "public, max-age=0, must-revalidate"
        }
      ]
    },
    {
      "source": "/(.*)",
      "headers": [
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-Frame-Options",
          "value": "DENY"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        }
      ]
    },
    {
      "source": "/:path*",
      "has": [
        {
          "type": "query",
          "key": "authorized"
        }
      ],
      "headers": [
        {
          "key": "x-authorized",
          "value": "true"
        }
      ]
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:07:31