gpt4 book ai didi

node.js - 错误的内容类型 header ,没有多部分边界 Nodejs

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:09 24 4
gpt4 key购买 nike

我有一个 API,它返回内容类型为 content-type: "multipart/form-data; charset=utf-8" 的内容。但是,在我的 Nodejs 应用程序中,当我通过 superagent 进行以下调用时:

request
.get(ApiUrl + id)
.set('Authorization', basicHttpAuth)
.set('client_id', clientId)
.set('client_secret', clientSecret)
.end(function (err, res) {
if (err) {
callback(null, err)
console.log(err);
}
else {
callback(null, res);
}
})

我收到此错误:

Error: bad content-type header, no multipart boundary

知道出了什么问题吗?

堆栈跟踪:

Error: bad content-type header, no multipart boundary
at IncomingForm._parseContentType (/Users/mike/Svr/Server/node_modules/formidable/lib/incoming_form.js:271:19)
at IncomingForm.writeHeaders (/Users/mike/Svr/Server/node_modules/formidable/lib/incoming_form.js:142:8)
at IncomingForm.parse (/Users/mike/Svr/Server/node_modules/formidable/lib/incoming_form.js:110:8)
at ClientRequest.<anonymous> (/Users/mike/Svr/Server/node_modules/superagent/lib/node/index.js:869:9)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at ClientRequest.emit (events.js:210:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:564:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:116:23)
at TLSSocket.socketOnData (_http_client.js:453:20) response: undefined }

这是服务器响应 header :

Access-Control-Allow-Origin →*
Connection →keep-alive
Content-Length →44691
Content-Type →multipart/form-data; charset=utf-8
Date →Wed, 05 Jul 2017 03:44:23 GMT

正文是一大块文本/字符串。

最佳答案

根据RFC2045 :

...while the "boundary" parameter is required for any subtype of the "multipart" media type.

在您的情况下,服务器没有设置该参数,因此响应无效,并且 superagent (尝试解析响应)会抛出错误。

您也许可以使用替代 HTTP 客户端,前提是它不尝试解析 multipart/form-data 响应。

您可以使用内置的 http(s).get() ,或者可能是 request包。

编辑:如果您无法使用superagent,那么您可以对其进行猴子补丁,以便它检测到损坏的响应并将其视为text/plain

在代码中的“高层”位置添加以下内容(在使用 superagent 之前):

const Utils     = require('superagent/lib/utils');
const UtilsType = Utils.type;
Utils.type = function(type) {
if (type === 'multipart/form-data; charset=utf-8') {
type = 'text/plain; charset=utf-8';
}
return UtilsType.call(this, type);
};

关于node.js - 错误的内容类型 header ,没有多部分边界 Nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919424/

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