我尝试通过Axios在本地发送POST请求,并在正文中输入用户名和密码。
我正在http://127.0.0.1:5000/login上部署一个Flask应用程序,它处理/login路由。
POST http://127.0.0.1:5000/login 500 (INTERNAL SERVER ERROR)
Error: Request failed with status code 500
at createError (createError.js:16)
at settle (settle.js:18)
at XMLHttpRequest.handleLoad (xhr.js:77)
我研究了一下,认为这可能是CORS的一个问题,但似乎不是这样,因为我尝试了一个Axios GET请求,它工作正常(响应记录正确)。
axios.get("http://127.0.0.1:5000").then(function(response) {
console.log(response);
}).catch(function(error) {
console.log(error);
})
axios.post("http://127.0.0.1:5000/login", {
username: this.state.username,
password: this.state.password
}).then(function(response) {
console.log(response);
}).catch(function(error) {
console.log(error);
})
查看Chrome DevTools,我可以看到POST请求负载被正确填充。然后我尝试使用以下代码在Flask应用程序中打印服务器端的密钥,但我什么也没得到,为空。(这是预期的,因为POST请求失败)
dict = request.form
for key in dict:
print('form key '+dict[key])
然而,使用Postman和相应的键和值可以正常工作,并返回一个响应,打印出键(见上文)。失败来自哪里?为什么POST请求会失败,而GET似乎工作得很好?
6条答案
按热度按时间lhcgjxsq1#
2021年2月。在这上面浪费了2个小时。在互联网上对这个著名的图书馆没有太多帮助。
解决方案:
error
将始终为500 internal server error
error.response.data
而不是error
。代码:
更新日期:
我最后编写了一个处理错误的通用函数:
文件:common.app.js
更多信息:https://github.com/axios/axios#handling-errors
hrirmatl2#
所以我也陷入了同样的问题,我找到的解决方案是这样的:
这个解决方案对我很有效。
9cbw7uwe3#
显然Axios并不喜欢原始的JSON对象
但将数据传递到FormData对象中似乎可以正常工作!
gcuhipw94#
在工作了2个小时后,我意识到我在主体和数据上犯了一个错误。所以,在axios中确保你像这样传递数据。
我以前的代码是这样传递数据的,这是错误的
简单地尝试我的第一个代码,希望能解决你的问题.
z9ju0rcb5#
大多数情况下,发生这种情况是因为使用了错误的内容类型头。
打开postman,看到“正文”标签。在那里你可以找到你的帖子数据的内容类型。它也可以从“标题”标签访问。应该有一个
Content-Type
标题。你通过POST请求发送的data
的正确格式取决于Content-Type
标题。例如,json内容类型需要json(javascript对象)数据或表单数据内容类型需要FormData。要在axios中设置头文件,请将代码更改为:
yzxexxkh6#
我有类似的错误,我有JSON大写,它应该是小写的