# app.set
将设置
name
分配给value
。
# 概要
app.set(name, value)
# 描述
将设置 name
分配给 value
。您可以存储任何您想要的值,但某些名称可用于配置服务器的行为。这些特殊名称列在 应用设置表
中。
为布尔属性调用 app.set('foo', true)
与调用 app.enable('foo')
相同。同样,为布尔属性调用 app.set('foo', false)
与调用 app.disable('foo')
相同。
使用 app.get()
检索设置的值。
app.set('title', 'My Site')
app.get('title') // "My Site"
# 应用程序设置
下表列出了应用程序设置。
请注意,子应用程序将:
- 不继承具有默认值的设置值。您必须在子应用程序中设置该值。
- 继承设置的值,没有默认值; 这些在下表中明确指出。
例外:子应用将继承 trust proxy
的值,即使它有一个默认值(为了向后兼容);子应用在生产中不会继承 view cache
的值(当 NODE_ENV
为 "production" 时)。
属性 | 类型 | 描述 | 默认 |
---|---|---|---|
case sensitive routing | 布尔值 | 启用区分大小写。启用后,"/Foo" 和 "/foo" 是不同的路由。禁用时,"/Foo" 和 "/foo" 被视为相同。 注意:子应用将继承此设置的值。 | N/A (undefined) |
env | 字符串 | 环境模式。生产环境一定要设置为"production";见 生产最佳实践:性能和可靠性。 | process.env.NODE_ENV(NODE_ENV 环境变量)或 "development"(如果未设置 NODE_ENV)。 |
etag | 多变 | 设置 ETag 响应标头。有关可能的值,请参阅 etag 选项表。有关 HTTP ETag 标头的更多信息。 | weak |
jsonp callback name | 字符串 | 指定默认 JSONP 回调名称。 | "callback" |
json escape | 布尔值 | 启用从 res.json、res.jsonp 和 res.send API 转义 JSON 响应。这会将字符 <、> 和 & 转义为 JSON 中的 Unicode 转义序列。这样做的目的是在客户端嗅探 HTML 响应时协助 缓解某些类型的持续性 XSS 攻击。 注意:子应用将继承此设置的值。 | N/A (undefined) |
json replacer | 多变 | JSON.stringify 使用的 'replacer' 参数。 注意:子应用将继承此设置的值。 | N/A (undefined) |
json spaces | 多变 | JSON.stringify 使用的 'space' 参数。这通常设置为用于缩进美化 JSON 的空格数。 注意:子应用将继承此设置的值。 | N/A (undefined) |
query parser | 多变 | 通过将值设置为 false 来禁用查询解析,或者将查询解析器设置为使用 "simple" 或 "extended" 或自定义查询字符串解析函数。简单查询解析器基于 Node 的原生查询解析器 querystring。扩展查询解析器基于 qs。自定义查询字符串解析函数将接收完整的查询字符串,并且必须返回查询键及其值的对象。 | "extended" |
strict routing | 布尔值 | 启用严格路由。启用后,路由将 "/foo" 和 "/foo/" 视为不同。否则,路由将 "/foo" 和 "/foo/" 视为相同。 注意:子应用将继承此设置的值。 | N/A (undefined) |
subdomain offset | 数字 | 要删除以访问子域的主机的点分隔部分的数量。 | 2 |
trust proxy | 多变 | 指示应用程序位于前端代理之后,并使用 X-Forwarded-* 标头来确定客户端的连接和 IP 地址。注意:X-Forwarded-* 标头很容易被欺骗,检测到的 IP 地址不可靠。启用后,Express 会尝试确定通过前端代理或一系列代理连接的客户端的 IP 地址。req.ips 属性,然后包含客户端连接通过的 IP 地址数组。要启用它,请使用 信任代理选项表 中描述的值。trust proxy 设置是使用 proxy-addr 包实现的。有关更多信息,请参阅其文档。注意:子应用将继承此设置的值,即使它具有默认值。 | false(已禁用) |
views | 字符串或数组 | 应用程序视图的目录或目录数组。如果是数组,则按照它们在数组中出现的顺序查找视图。 | process.cwd() + '/views' |
view cache | 布尔值 | 启用视图模板编译缓存。注意:子应用在生产中不会继承此设置的值(当 NODE_ENV 为 "production" 时)。 | true 在生产中,否则未定义。 |
view engine | 字符串 | 省略时使用的默认引擎扩展。注意:子应用将继承此设置的值。 | N/A (undefined) |
x-powered-by | 布尔值 | 启用 "X-Powered-By: Express" HTTP 标头。 | true |
# trust proxy 设置选项
阅读 代理背后的 Express
了解更多信息。
类型 | 值 |
---|---|
布尔值 | 如果是 true,则客户端的 IP 地址被理解为 X-Forwarded-* 标头中最左边的条目。如果是false,则应用理解为直接面向互联网,客户端的IP地址来源于req.connection.remoteAddress。这是默认设置。 |
字符串 包含逗号分隔值的字符串 字符串数组 | 要信任的 IP 地址、子网或 IP 地址数组和子网。预配置的子网名称为: - loopback - 127.0.0.1/8,::1/128 - linklocal - 169.254.0.0/16,fe80::/10 - uniquelocal - 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、fc00::/7 通过以下任一方式设置 IP 地址: 指定单个子网:app.set('trust proxy', 'loopback') 指定子网和地址:app.set('trust proxy', 'loopback, 123.123.123.123') 将多个子网指定为 CSV:app.set('trust proxy', 'loopback, linklocal, uniquelocal') 将多个子网指定为数组:app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) 指定时,IP 地址或子网将被排除在地址确定过程之外,并将离应用服务器最近的不受信任的 IP 地址确定为客户端的 IP 地址。 |
数字 | 信任来自前端代理服务器的 nth 跃点作为客户端。 |
函数 | 自定义信任实现。仅当您知道自己在做什么时才使用它。 app.set('trust proxy', (ip) => { if (ip === '127.0.0.1' |
# etag 设置选项
注意:这些设置仅适用于动态文件,不适用于静态文件。express.static 中间件会忽略这些设置。
ETag 功能是使用 etag
包实现的。有关更多信息,请参阅其文档。
类型 | 值 |
---|---|
布尔值 | true 启用弱 ETag。这是默认设置。false 完全禁用 ETag。 |
字符串 | 如果 "strong",启用强 ETag。如果 "weak",启用弱 ETag。 |
函数 | 自定义 ETag 函数实现。仅当您知道自己在做什么时才使用它。app.set('etag', (body, encoding) => { return generateHash(body, encoding) // consider the function is defined }) |