所以我在我的Angular2应用程序中使用了Dropbox HTTP API。我可以登录,授权和使用list_folder
请求等,这一切都按预期工作
但是当我尝试向files/download
执行简单的帖子请求时,我收到一条错误消息,说我已经提供了非空content-type
:
Error in call to API function \"files/download\": You provided a non-empty HTTP \"Content-Type\" header (\"text/plain;charset=UTF-8\").
这是我目前的代码 - 我已经尝试了很多不同的方式,而且我没有在任何地方设置content-type
。
let headers = new Headers();
let url = 'https://content.dropboxapi.com/2/files/download';
headers.append('Authorization', `Bearer <inserted-bearer-here>`);
headers.append("Dropbox-API-Arg", "{\"path\": \"/Documents/code/convert.js\"}");
console.log(headers);
// this is an RxJS observable which is subscribed to later in my code...
return this.http.post(url, null, { headers: headers });
content-type
肯定没有设置,因为我在发送之前将标题记录到控制台:
任何人都能对这个问题有所了解吗?我查看了SO上的其他问题,发现只有错误地设置了content-type
字段等,没有设置它们没有设置且无法正常工作。
- 编辑 -
此代码在Chrome中正常运行:
let headers = new Headers({
'Authorization': `Bearer ${this.userData.bearer}`,
'Dropbox-API-Arg': "{\"path\": \"/Documents/code/convert.js\"},
'content-type': null
});
http.post(url, null, { headers: headers })
.subsribe(...);
但是,在Safari中,如果Content-Type
为null
,它会自动附加text/plain;charset=UTF-8
我似乎无法找到一种方法来强制发送一个空的http标头..如果有人知道这个问题的答案/或者Safari的polyfill / fix那绝对是惊人的!
答案 0 :(得分:1)
尝试添加headers.append('Content-Type', null);
?
这似乎对我有用:
http.post(url, null, new RequestOptions({
headers: new Headers({'Content-Type': null})
})).subscribe(...);
答案 1 :(得分:1)
c1 = df[df['val'] > 10].index.tolist()
c2 = df[df['val'] < 5].index.tolist()
null不起作用,空字符串不起作用,但空格确实有效
这让我疯了,我无法找到解决方案 - 这是大海捞针预感中的随机针,它确实有效。
答案 2 :(得分:0)
添加headers.append('Content-Type','');
对我有用。