AngularJS忽略$ http.default.headers

时间:2014-12-20 13:28:29

标签: angularjs

Angular v1.3.5

我试图将序列化数据传递给我的API。它要求Content-Type标题为application/x-www-form-urlencoded; charset=UTF-8;

对于POST,我已在.run

中将此设置如下
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8;";

这适用于POST。但是,对于PUT,完全忽略了它。

$http.defaults.headers.put["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8;";

我甚至试过把它放在请求中。内容类型仍然被忽略。

$http({
  method : 'PUT',
  url : SMARTWORX_CONFIGS.APIURL + 'users/' + service.profile.id + '.json',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8;'
  },
  data : {
    user : profile
  }
})

我被迫通过使用拦截器并将标头添加到配置对象来解决这个问题。这很糟糕,但它确实有效。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

在我的墙上敲了一下之后,我发现了问题 - 我自己制作的。

我的应用正在使用令牌进行身份验证;所以,我有一个拦截器,在需要时将令牌注入标头。我犯了这个错误。

看起来像是:

config.headers = config.header || {};
config.headers['X-AUTH-TOKEN'] = result;

它应该写成:

config.headers = config.headers || {};
config.headers['X-AUTH-TOKEN'] = result;

基本上,我正在吹灭所有以前的标题。