我正在尝试通过Axios在体内使用用户名和密码发送POST请求。

我正在http://127.0.0.1:5000/login上部署Flask应用程序,该应用程序处理/ login路由。 POST请求失败,并出现以下错误

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与相应的键和值一起使用会正常工作,并返回响应并打印出键(请参见上文)。失败从何而来?为什么当GET正常工作时POST请求失败?

最佳答案

所以我也陷入了同样的问题,发现的解决方案是这样的:

let data = JSON.stringify({
  username: this.state.username,
  password: password
});

const response = axios.post(url,data,{headers:{"Content-Type" : "application/json"}});

这个解决方案对我有用。

关于javascript - Axios POST请求失败,错误状态码为500:内部服务器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50950011/

10-11 01:46