gpt4 book ai didi

node.js - 无法使用 Express 4 路由器获取 Content-Type header

转载 作者:搜寻专家 更新时间:2023-11-01 00:44:33 24 4
gpt4 key购买 nike

我正在尝试根据 Content-Type 返回不同的内容请求中的 header :纯文本或 JSON 对象。在 Express 3.x 中,我使用了 req.accepted('application/json')查明用户是否要求 JSON。但是req.accepted()已在 4.x 中弃用。

我试过了 req.is() - 返回 undefined , 和 req.accepts() -没用。最后,我采用了:

var router = require('express').Router();
router.get('/ping', function(req, res) {
var serverTime = (new Date()).toLocaleString();
if(req.get('Content-Type').indexOf('json') !== -1) {
res.set({'Content-Type': 'application/json'});
res.send({serverTime: serverTime});
}
else {
res.send('serverTime: ' + serverTime);
}
});

这在本地主机上运行良好(使用 CURL 测试),但是一旦我部署到 Heroku,我得到:

    TypeError: Cannot call method 'indexOf' of undefined at 
Object.router.get.res.set.Content-Type [as handle]

如何在 Express 4 中获取 header 类型并正确处理? Heroku 是否以某种方式剥离标题?或者可能是那些新的中间件?

更新:我刚刚验证了使用 CURL 每次都有效,使用浏览器会产生 undefined对于 req.get('Content-Type')在本地和 Heroku 上 - 所以这不是 Heroku 问题。尽管如此,我还是需要标题。

最佳答案

GET 请求上检查 Content-Type 没有意义。 Content-Type header 定义请求正文中的类型数据,GET 请求没有正文。 req.is 也会检查这个,所以在这种情况下它也没有用。

您应该将客户端的 Accept header 设置为 application/json 并使用 req.accepts( 'json') 在服务器上验证客户端是否表明它支持 JSON。

关于node.js - 无法使用 Express 4 路由器获取 Content-Type header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23038305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com