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
}
})
我被迫通过使用拦截器并将标头添加到配置对象来解决这个问题。这很糟糕,但它确实有效。
我在这里做错了吗?
答案 0 :(得分:2)
在我的墙上敲了一下之后,我发现了问题 - 我自己制作的。
我的应用正在使用令牌进行身份验证;所以,我有一个拦截器,在需要时将令牌注入标头。我犯了这个错误。
看起来像是:
config.headers = config.header || {};
config.headers['X-AUTH-TOKEN'] = result;
它应该写成:
config.headers = config.headers || {};
config.headers['X-AUTH-TOKEN'] = result;
基本上,我正在吹灭所有以前的标题。