4.18.3 修补程序版本包含以下错误修复
修复没有方法的路由请求。(commit)
有关此版本中所有更改的完整列表,请参阅 History.md
4.18.2 修补程序版本包含以下错误修复
修复在单个路由中路由大型堆栈的回归。(commit)
有关此版本中所有更改的完整列表,请参阅 History.md
4.18.1 修补程序版本包含以下错误修复
修复如果使用非常大的路由堆栈创建 Express.js 应用程序,并且所有这些路由都是同步的(同步调用 next()
),则请求处理可能会挂起的条件。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.18.0 次要版本包含错误修复和一些新功能,包括
app.get()
方法 和 app.set()
方法 现在在获取设置值时会忽略 Object.prototype
上的直接属性。
res.cookie()
方法 现在接受一个“优先级”选项,用于在 Set-Cookie 响应标头中设置 Priority 属性。
现在,当提供无效的 Date 对象作为“expires”选项时,res.cookie()
方法 会拒绝。
现在,当显式地将 null
或 undefined
作为“maxAge”参数提供时,res.cookie()
方法 会正常工作。
从本版本开始,Express 支持 Node.js 18.x。
res.download()
方法 现在接受“root”选项,以匹配 res.sendFile()
。
res.download()
方法 可以提供一个 options
对象,而无需提供 filename
参数,从而简化了当需要默认 filename
时调用。
现在,res.format()
方法 会使用与类型处理程序相同的参数(req
、res
和 next
)调用提供的“default”处理程序。
当响应代码设置为 205 时,res.send()
方法 将不会尝试发送响应主体。
现在,默认错误处理程序将删除某些响应头,这些响应头如果先前已设置,将破坏错误响应渲染。
状态代码 425 现在表示为标准的“Too Early”,而不是“Unordered Collection”。
有关此版本中更改的完整列表,请参阅 History.md。
4.17.3 修补版本包含一个错误修复
更新到 qs 模块,以修复解析 __proto__
属性的问题。
有关此版本中更改的完整列表,请参阅 History.md。
4.17.2 修补版本包含以下错误修复
修复了在提供回调时 res.jsonp
中处理 undefined
的问题。
修复了在启用 "json escape"
时 res.json
和 res.jsonp
中处理 undefined
的问题。
修复了对 res.cookie()
的 maxAge
选项的无效值的处理。
更新到 jshttp/proxy-addr 模块,以使用 req.socket
代替已弃用的 req.connection
。
从本版本开始,Express 支持 Node.js 14.x。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.17.1 修补版本包含一个错误修复
对 res.status()
API 的更改已恢复,因为会导致现有 Express 4 应用程序出现回归。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.17.0 次要版本包含错误修复和一些新功能,包括
已添加 express.raw()
和 express.text()
中间件,为更多原始请求有效负载提供请求主体解析。这在底层使用 expressjs/body-parser 模块 模块,因此目前单独需要该模块的应用程序可以切换到内置解析器。
res.cookie()
API 现在支持 "none"
值作为 sameSite
选项。
当启用 "trust proxy"
设置时,req.hostname
现在支持请求中的多个 X-Forwarded-For
标头。
从该版本开始,Express 支持 Node.js 10.x 和 12.x。
res.sendFile()
API 现在提供更直接且更容易理解的错误,当将非字符串传递为 path
参数时。
res.status()
API 现在提供更直接且更容易理解的错误,当将 null
或 undefined
传递为参数时。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.16.4 修补版本包含各种错误修复
修复 "Request aborted"
可能在 res.sendfile
中记录的问题。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.16.3 修补版本包含各种错误修复
修复在 res.location
方法或 res.redirect
方法中,url 末尾的纯 %
不会被编码为 %25
的问题。
修复了在默认 404 处理中,空 req.url
值会导致抛出错误的问题。
修复了为 express.static
重定向响应生成的 HTML 文档,以正确包含 </html>
。
有关此版本中更改的完整列表,请参阅 History.md。
4.16.2 修补版本包含一个回归错误修复
修复了当将 Buffer
传递给 res.send
并且响应中已设置 ETag
标头时,在 res.send
方法中可能发生的 TypeError
。
有关此版本中更改的完整列表,请参阅 History.md。
4.16.1 修补版本包含一个回归错误修复
更新到 pillarjs/send 模块 以修复影响 express.static
的某些用户的边缘情况回归。
有关此版本中更改的完整列表,请参阅 History.md。
4.16.0 次要版本包含安全更新、错误修复、性能增强以及一些新功能,包括
更新到 jshttp/forwarded 模块 以解决 漏洞。如果使用以下 API,这可能会影响您的应用程序:req.host
、req.hostname
、req.ip
、req.ips
、req.protocol
。
更新 pillarjs/send 模块 的依赖项以解决 mime
依赖项中的 漏洞。如果将不可信的字符串输入传递给以下 API,这可能会影响您的应用程序:res.type()
。
pillarjs/send 模块 已实施对 Node.js 8.5.0 漏洞 的保护。在 Node.js 8.5.0(该特定 Node.js 版本)中使用任何先前版本的 Express.js 将使以下 API 容易受到攻击:express.static
、res.sendfile
和 res.sendFile
。
从该版本开始,Express 支持 Node.js 8.x。
新的设置 "json escape"
可以启用以转义 res.json()
、res.jsonp()
和 res.send()
响应中的字符,这些字符可能会触发客户端将响应嗅探为 HTML 而不是遵守 Content-Type
。这可以帮助保护 Express 应用程序免受一类持久性 XSS 攻击。
res.download()
方法 现在接受一个可选的 options
对象。
express.json()
和 express.urlencoded()
中间件已添加,以提供开箱即用的请求体解析支持。这在底层使用 expressjs/body-parser 模块,因此目前单独需要该模块的应用程序可以切换到内置解析器。
express.static()
中间件 和 res.sendFile()
方法 现在支持在 Cache-Control
标头中设置 immutable
指令。使用适当的 maxAge
设置此标头将阻止支持的 Web 浏览器在文件仍在其缓存中时向服务器发送任何请求。
pillarjs/send 模块 更新了 MIME 类型列表,以更好地设置更多文件的 Content-Type
。有 70 种新的文件扩展名类型。
有关此版本中更改的完整列表,请参阅 History.md。
4.15.5 修补版本包含安全更新、一些次要性能增强和错误修复。
更新到 jshttp/fresh 模块 以解决 漏洞。如果使用以下 API,这将影响您的应用程序:express.static
、req.fresh
、res.json
、res.jsonp
、res.send
、res.sendfile
res.sendFile
、res.sendStatus
。
更新到 jshttp/fresh 模块 修复了对具有无效日期的修改标头的处理,并使解析条件标头(如 If-None-Match
)更快。
有关此版本中更改的完整列表,请参阅 History.md。
4.15.4 修补版本包含一些次要错误修复。
修复在某些情况下 "trust proxy"
值被操作的数组设置。
有关此版本中更改的完整列表,请参阅 History.md。
4.15.3 修补版本包含安全更新和一些次要错误修复。
更新 pillarjs/send 模块 的依赖项以解决 漏洞。如果将不受信任的字符串输入传递到以下 API 中的 maxAge
选项,这可能会影响您的应用程序:express.static
、res.sendfile
和 res.sendFile
。
修复 res.set
无法将字符集添加到 Content-Type
时发生的错误。
修复 HTML 文档中缺少 </html>
的问题。
有关此版本中更改的完整列表,请参阅 History.md。
4.15.2 修补版本包含一个次要错误修复。
修复在扩展(默认)查询解析器中解析以 [
开头的键的回归。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.15.1 修补版本包含一个小的错误修复
修复了使用 datejs 1.x 库时的兼容性问题,其中 express.static()
中间件 和 res.sendFile()
方法 会错误地响应 412 Precondition Failed。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.15.0 次要版本包含错误修复、性能改进和其他次要功能添加,包括
从本版本开始,Express 支持 Node.js 7.x。
express.static()
中间件 和 res.sendFile()
方法 现在支持 If-Match
和 If-Unmodified-Since
请求头。
更新到 jshttp/etag 模块 以生成响应的默认 ETags,这些 ETags 在 Node.js 启用了 FIPS 兼容加密 时有效。
各种自动生成的 HTML 响应,如默认的未找到和错误处理程序,将响应完整的 HTML 5 文档和额外的安全头。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.14.1 修补版本包含错误修复和性能改进,包括
更新到 pillarjs/finalhandler 模块 修复了 Express 处理具有非对象 headers
属性的 Error
对象时的异常。
有关此版本中所有更改的完整列表,请参阅 History.md。
4.14.0 次要版本包含错误修复、安全更新、性能改进和其他次要功能添加,包括
从本版本开始,Express 支持 Node.js 6.x。
更新到 jshttp/negotiator 模块 修复了 正则表达式拒绝服务漏洞。
res.sendFile()
方法 现在接受两个新选项:acceptRanges
和 cacheControl
。
acceptRanges
(默认值为 true
)启用或禁用接受范围请求。禁用后,响应不会发送 Accept-Ranges
头,并忽略 Range
请求头的内容。
cacheControl
(默认值为 true
)启用或禁用 Cache-Control
响应头。禁用它将忽略 maxAge
选项。
res.sendFile
也已更新以更好地处理 Range
头和重定向。
res.location()
方法 和 res.redirect()
方法 现在将对 URL 字符串进行 URL 编码,如果它尚未编码。
在常见情况下,res.json()
方法 和 res.jsonp()
方法 的性能得到了提升。
jshttp/cookie 模块(除了其他一些改进)已经更新,现在 res.cookie()
方法 支持 sameSite
选项,允许您指定 SameSite cookie 属性。注意:此属性尚未完全标准化,将来可能会更改,并且许多客户端可能会忽略它。
sameSite
选项的可能值为
true
,它将 SameSite
属性设置为 Strict
,以进行严格的同站点强制执行。false
,它不设置 SameSite
属性。'lax'
,它将 SameSite
属性设置为 Lax
,以进行宽松的同站点强制执行。'strict'
,它将 SameSite
属性设置为 Strict
,以进行严格的同站点强制执行。已修复 Windows 上的绝对路径检查,在某些情况下不正确。
代理的 IP 地址解析已得到很大改进。
req.range()
方法 选项对象现在支持 combine
选项(默认情况下为 false
),当 true
时,它会将重叠和相邻的范围组合起来,并将其作为在标头中以这种方式指定的方式返回。
有关此版本中更改的完整列表,请参阅 History.md。