Sinon fakeServer failed to mock POST: 'TypeError: By RFC7230, section 3.2.4, header values should be strings. Got object'
Sinon fakeServer failed to mock POST: 'TypeError: By RFC7230, section 3.2.4, header values should be strings. Got object'
GET 方法工作正常,但使用 POST 总是会遇到问题。
我的测试代码是
let server = sinon.createFakeServer();
server.respondImmediately = true;
server.respondWith(`api/v1.0/companies/${companyResponse.id}/orgchart`, [200, {"Content-Type": "*/*"}, 'OK']);
下面是 ajax 调用:
ajax({
type: "POST",
url: '/my/api/endpoint',
data: data,
processData: false,
contentType: false,
complete: this.handleLoadingComplete,
xhr: function(){
let xhr = $.ajaxSettings.xhr() ;
xhr.upload.onprogress = function(evt){
updateProgress(evt.loaded, evt.total);
} ;
xhr.upload.onload = function(){ console.log('loading completed') } ;
return xhr ;
}
});
使用完全相同的测试代码,当我将 ajax 方法设置为 'GET' 时,它起作用了。但是 'POST' 它总是失败。这是上面ajax的complete
收到的回复 POST:
`
{ readyState: 0,
getResponseHeader: [Function: getResponseHeader],
getAllResponseHeaders: [Function: getAllResponseHeaders],
setRequestHeader: [Function: setRequestHeader],
overrideMimeType: [Function: overrideMimeType],
statusCode: [Function: statusCode],
abort: [Function: abort],
state: [Function: state],
always: [Function: always],
catch: [Function: catch],
pipe: [Function: pipe],
then: [Function: then],
promise: [Function: promise],
progress: [Function: add],
done: [Function: add],
fail: [Function: add],
status: 0,
statusText:
'TypeError: By RFC7230, section 3.2.4, header values should be strings. Got object' }
`
我不知道这里有什么错误,我被困了几个小时....有人可以帮忙吗?将不胜感激!
我有同样的问题,在我的情况下,它与 axios 的设置方式有关 headers。这不是一个真正的解决方案,但固定 sinon 并强制使用旧版本的 nise
解决了这个问题。这是一个 package.json
片段:
...
"devSependencies": {
...
"sinon": "^4.5.0",
...
}
...
"resolutions:" {
"nise": "1.2.7"
}
...
我遇到了同样的错误。
经过大量挖掘后发现请求 headers.Hence 中缺少某些参数,ajax 正在中止请求。
GET 方法工作正常,但使用 POST 总是会遇到问题。 我的测试代码是
let server = sinon.createFakeServer();
server.respondImmediately = true;
server.respondWith(`api/v1.0/companies/${companyResponse.id}/orgchart`, [200, {"Content-Type": "*/*"}, 'OK']);
下面是 ajax 调用:
ajax({
type: "POST",
url: '/my/api/endpoint',
data: data,
processData: false,
contentType: false,
complete: this.handleLoadingComplete,
xhr: function(){
let xhr = $.ajaxSettings.xhr() ;
xhr.upload.onprogress = function(evt){
updateProgress(evt.loaded, evt.total);
} ;
xhr.upload.onload = function(){ console.log('loading completed') } ;
return xhr ;
}
});
使用完全相同的测试代码,当我将 ajax 方法设置为 'GET' 时,它起作用了。但是 'POST' 它总是失败。这是上面ajax的complete
收到的回复 POST:
`
{ readyState: 0,
getResponseHeader: [Function: getResponseHeader],
getAllResponseHeaders: [Function: getAllResponseHeaders],
setRequestHeader: [Function: setRequestHeader],
overrideMimeType: [Function: overrideMimeType],
statusCode: [Function: statusCode],
abort: [Function: abort],
state: [Function: state],
always: [Function: always],
catch: [Function: catch],
pipe: [Function: pipe],
then: [Function: then],
promise: [Function: promise],
progress: [Function: add],
done: [Function: add],
fail: [Function: add],
status: 0,
statusText:
'TypeError: By RFC7230, section 3.2.4, header values should be strings. Got object' }
` 我不知道这里有什么错误,我被困了几个小时....有人可以帮忙吗?将不胜感激!
我有同样的问题,在我的情况下,它与 axios 的设置方式有关 headers。这不是一个真正的解决方案,但固定 sinon 并强制使用旧版本的 nise
解决了这个问题。这是一个 package.json
片段:
...
"devSependencies": {
...
"sinon": "^4.5.0",
...
}
...
"resolutions:" {
"nise": "1.2.7"
}
...
我遇到了同样的错误。 经过大量挖掘后发现请求 headers.Hence 中缺少某些参数,ajax 正在中止请求。