From d4c13e06989ad9e4a95364399c8f35720151b65f Mon Sep 17 00:00:00 2001 From: liruifengv Date: Sat, 22 Nov 2025 10:20:04 +0800 Subject: [PATCH] i18n(zh-cn): Update `configuration-reference.mdx` --- .../reference/configuration-reference.mdx | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/content/docs/zh-cn/reference/configuration-reference.mdx b/src/content/docs/zh-cn/reference/configuration-reference.mdx index cf58a375d3087..56adfa05e12e2 100644 --- a/src/content/docs/zh-cn/reference/configuration-reference.mdx +++ b/src/content/docs/zh-cn/reference/configuration-reference.mdx @@ -404,6 +404,42 @@ export default defineConfig({ 如果 "origin" 头与请求的 `pathname` 不匹配,Astro 将返回 403 状态码,并不会渲染该页面。 +#### security.allowedDomains + +

+ +**类型:** `Array`
+**默认值:** `[]`
+ +

+ +定义了一个在使用 SSR 时允许的主机模式列表。配置后,Astro 会将 `X-Forwarded-Host` header 与这些模式进行验证以确保安全。如果 header 不符合任何允许的模式,则该 header 会被忽略,改用请求的原始主机。 + +这样可以防止主机 header 注入攻击,恶意行为者可能通过发送精心构造的 `X-Forwarded-Host` header 来操纵 `Astro.url` 的值。 + +每个模式可以指定 `protocol`、`hostname` 和 `port`。如果提供了这三项中的任意项,都会进行验证。模式支持通配符以实现灵活的主机名匹配: + +```js +{ + security: { + // 示例:允许通过 HTTPS 访问 example.com 的任意子域 + allowedDomains: [ + { + hostname: '**.example.com', + protocol: 'https' + }, + { + hostname: 'staging.myapp.com', + protocol: 'https', + port: '443' + } + ] + } +} +``` + +如果未配置,`X-Forwarded-Host` header 不会被信任并将被忽略。 + ### vite