fetchAPI的标头对象始终为空

时间:2019-06-22 20:05:18

标签: javascript rest ecmascript-6

我有这个请求函数,该函数围绕着获取API进行包装,以向我的API发出请求。但是,当我的前端应用程序发出请求时,标头对象始终为空。我在做什么错了?

export function request(method, url, payload) {
  const body = JSON.stringify(payload);
  const headers = new Headers();
  headers.append('Content-Type', 'application/json');
  const parameters = {
    headers: headers,
    method: method,
    body: body,
    cache: "default"
  };
  return Observable.create(observer => {
    fetch(url, parameters)
      .then(response => {
        observer.next(response);
        observer.complete();
      })
      .catch(error => {
        observer.error(error);
      });
  });
}

2 个答案:

答案 0 :(得分:0)

尝试使其成为一个简单的对象:

const headers = {
    "Content-Type": "application/json"
};

答案 1 :(得分:0)

您是否在 DevTools 的网络选项卡中检查过是否确实缺少标头?

我遇到了与您描述的相同的问题,Chrome DevTools 中我的 Header 对象似乎始终为空,但是如果尝试检查特定的标题,例如

let headers = new Headers({'X-whatever-name': 'whatever-value'});
myHeader.has('X-whatever-name'); // returns true

此外,如果我在 DevTools(网络选项卡)中检查请求标头的详细信息,我可以看到我的自定义标头已正确发送。

所以只有 JS api (entries, keys, ...) 对我来说似乎被破坏了,但请求被正确发送。