如何在Express中获取请求的客户端语言与浏览器软件信息?
问题原因
原生 Express 的请求对象 req 未内置 req.language 和 req.software 两个属性,这两个信息需要手动从 HTTP 请求头中提取。
解决方法
客户端语言偏好存储在 accept-language 请求头中,浏览器/设备信息存储在 user-agent 请求头中,直接从 req.headers 中读取对应字段即可。
修改后的代码示例
app.get('/api/whoami', (req, res, next)=> { let json = { "ipaddress": req.ip, "language": req.headers['accept-language']?.split(',')[0], // 取优先级最高的第一个语言项 "software": req.headers['user-agent'] } res.json(json) next() })
可选优化
- 如果需要更规范的语言解析、用户代理信息解析,可以引入对应的第三方工具库,比如
accepts处理语言偏好,express-useragent解析设备、浏览器信息,省去手动处理字符串的步骤。
内容的提问来源于stack exchange,提问作者Michael-Liendo
相关产品推荐
相关产品推荐

