gpt4 book ai didi

json - Express 正在将我的 'Content-Type' header 从 'applicaiton/json' 重写为 'text/plain'

转载 作者:太空宇宙 更新时间:2023-11-04 00:57:26 25 4
gpt4 key购买 nike

我有一个使用最新的express 3.x (3.18.3) 的应用程序,它返回一些JSON 数据。我将内容类型 header 设置如下:

res.setHeader('content-type', 'application/json')

但我注意到在返回的响应中,“内容类型” header 设置为“text/plain”??

最佳答案

事实证明,如果您使用了express-json,那么当您调用res.send时,该模块根据设计 - 将检查请求是否设置了“accept:'application/json' header ,如果没有,它会将您的内容类型响应 header 重写为'text/plain'!

两个简单的解决方案:

  1. 如果可以控制客户端,就是设置HTTP请求的accept header。
  2. 除非您想要这种行为,否则不要使用express-json

重写express-json包1.0.0版本中头部的代码:

(function (exports, require, module, __filename, __dirname) { module.exports = function () {
return function (req, res, next) {
var json = res.json;
res.json = function () {
if (!req.headers.accept || req.headers.accept.indexOf('application/json') === -1) {
res.contentType('text/plain');
}
json.apply(res, arguments);
};
next();
};
};

这是直接从 switch block 的 object 情况下的 res.send 函数调用的,IFF 您已加载 express-json

关于json - Express 正在将我的 'Content-Type' header 从 'applicaiton/json' 重写为 'text/plain',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069951/

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