Angular2 HTTP - 提供非空的HTTP内容类型标头* Safari *

时间:2016-05-16 23:37:09

标签: http angular http-headers dropbox

所以我在我的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肯定没有设置,因为我在发送之前将标题记录到控制台:

Logged headers variable

任何人都能对这个问题有所了解吗?我查看了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-Typenull,它会自动附加text/plain;charset=UTF-8

我似乎无法找到一种方法来强制发送一个空的http标头..如果有人知道这个问题的答案/或者Safari的polyfill / fix那绝对是惊人的!

3 个答案:

答案 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','');对我有用。