我尝试用axios做一个简单的发布请求。
我的代码段:
const getOauthToken = async () => {
try {
const headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'X-ProxyPass' : '...',
}
const data = {
...
}
return await axios.post('/oauth2/token', data, {headers: headers});
} catch (error) {
throw new Error(`Unable to get an authentication token. Reason ${error}`);
}
};
此呼叫在http 400上失败。当我将标头设置为默认值时,
axios.defaults.headers.post['X-ProxyPass'] = '...';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
然后它起作用。
答案 0 :(得分:0)
在axios文档中找到了解决方案。 如果使用“ application / x-www-form-urlencoded”,则必须使用querystring以所需的格式进行序列化。
return await axios.post('/oauth2/token', querystring.stringify(data), {headers: headers});
但是为什么它起作用,当我将标题设置为默认标题时,我仍然很神秘。