我正在向服务器发送一个POST
请求,通过axios获取一个令牌,其Content-Type
头部为x-www-form-urlencoded
。我试过同样的 Postman 和它的工作正常。我在请求体中发送一个grant_type和client_credentials的键值对。
这是我的Axios请求:
axios.post(`${baseURI}/protocol/openid-connect/token`, data, {
headers : {
"Authorization" : "Basic " + token,
"Content-Type" : "application/x-www-form-urlencoded"
},
withCredentials: true
}).then(response => {
AUTH_TOKEN = response.data.access_token;
console.log(response.data);
}).catch(error => {
console.log(error.response);
})
字符串
数据对象由client_credentials组成。相同的credentials在postman中给出成功的响应。
3条答案
按热度按时间q43xntqr1#
我遇到了同样的问题,直到我最终发现Axios需要将数据对象重新格式化为查询字符串。
因此,创建一个这样的函数:
字符串
非常简单,只需要对对象的所有部分进行URI编码,并使用
&
将它们连接起来。然后像这样修改你的代码:
型
你可以在这里阅读不同的选项,包括transformRequest,用于请求配置:https://github.com/axios/axios#request-config
(我仍然很恼火,这是必要的,而不仅仅是由Axios处理,但哦,好吧。
rekjcdws2#
虽然
@binary lobster
解决方案非常简洁,但可以考虑像这样使用qs
库:字符串
查看更多信息
esbemjvw3#
当
Content-Type
设置为application/x-www-form-urlencoded
时,现代Axios会自动转换为url编码:https://axios-http.com/docs/urlencoded
字符串
以上将呈现为:
型
至少Axois有表单提交API(从1995年开始!)working))