我正试图通过Axios在本地发送一个POST请求,其中包含用户名和密码。
我正在部署一个Flask应用程序http://127.0.0.1:5000/login,它处理/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);
})
查看ChromeDevTools,我可以看到POST请求有效负载已正确填充。然后,我尝试使用以下代码在Flask应用程序的服务器端打印密钥,但我一无所获,是空的。(
dict = request.form
for key in dict:
print('form key '+dict[key])
但是,使用带有相应键和值的Postman可以正常工作,并返回响应并打印出键(参见上文)。失败从何而来?GET似乎工作正常,为什么POST请求会失败?
显然Axios不喜欢原始JSON对象
{username: this.state.username, password: password}
但是将数据传递到FormData对象似乎工作得很好!
所以我也陷入了同样的问题,我找到的解决方案是这样的:
let data = JSON.stringify({
username: this.state.username,
password: password
});
const response = axios.post(url,data,{headers:{"Content-Type" : "application/json"}});
这个解决方案对我有效。
2000年2月2021日在这上面浪费了两个小时。在互联网上这个著名的图书馆没有多少帮助。
解决方案:
错误
将始终是500内部服务器错误
error.response.data
代替false
.代码:
try {
let result = await axios.post( // any call like get
"http://localhost:3001/user", // your URL
{ // data if post, put
some: "data",
}
);
console.log(result.response.data);
} catch (error) {
console.error(error.response.data); // NOTE - use "error.response.data` (not "error")
}
更新:
我最终编写了一个处理错误的通用函数:
文件:通用。应用程序。js
export const errorUtils = {
getError: (error) => {
let e = error;
if (error.response) {
e = error.response.data; // data, status, headers
if (error.response.data && error.response.data.error) {
e = error.response.data.error; // my app specific keys override
}
} else if (error.message) {
e = error.message;
} else {
e = "Unknown error occured";
}
return e;
},
};
更多信息:https://github.com/axios/axios#handling-错误
我已经被这个问题困扰了好几个小时,检查了几十个示例/StackOverflow答案,但我仍然得到同样的错误。这是我第一次使用AJAX,但我对Laravel有丰富的经验。 我遇到的问题是,在尝试发送AJAX请求时出现500个内部服务器错误,其目的是更新数据库中的一行。 我已经读到这个错误可能是由CSRF令牌没有被验证/传递到后端引起的,但是尽管改变了我的代码,我仍然得到同样的问题。 这是我的代码:
这是我从mysql数据库中删除数据的代码,我得到了这个错误。 在我选择名称并尝试提交后...它给我这个错误 HTTP状态500-内部服务器错误 类型异常报告 Message内部服务器错误 描述服务器遇到内部错误,无法满足此请求。 例外 组织。阿帕奇。贾斯珀。JaspereException:java。lang.NumberFormatException:空根本原因 JAVAlang.NumberF
当我尝试使用JSP运行我的Web应用程序(基本CRUD)时,GlassFish服务器返回以下消息: HTTP状态500-内部服务器错误 类型异常报告 消息内部服务器错误 说明服务器遇到内部错误,无法满足此请求。 例外 java.lang.NullPointerException 注意GlassFish Server Open Source Edition 4.1日志中提供了异常及其根本原因的完整堆
下面是我的一部分。jsp。 下面是我的错误: HTTP状态500–内部服务器错误 类型异常报告 消息在行[20]处处理[/home.jsp]时发生异常 说明服务器遇到意外情况,无法满足请求。 例外组织。阿帕奇。贾斯珀。JasperException:在第[20]行处理[/home.jsp]时发生异常 17:这是添加信息页 18: Stacktrace:org。阿帕奇。贾斯珀。servlet。Jsp
当我尝试使用JSP运行我的Web应用程序时,GlassFish服务器返回以下消息: 我不知道该怎么办。我认为这个错误与找不到javax有关。servlet。jsp。jstl。glassfish服务器中的jar库
我想知道这是否与Eclipse安装到权限有关,或者可能与项目结构有关?有人有线索吗?也许我应该寻找一个容器映像或其他东西来尝试在其上构建?多谢了。