Angular 未收到 spring 引导中 HttpServletResponse.sendErro() 方法设置的状态代码
Angular is not receiving the status code set by HttpServletResponse.sendErro() method in spring boot
如果用户未登录,我将发送未经授权的状态代码 (401) 和一条消息 spring 启动应用程序,如果我们用邮递员测试它,该过程工作正常,但是,它没有与 angular.
一起工作
例如:
有个API
http://localhost:8080/api/alarms?page=0&size=20
邮递员:
{
"timestamp": "2022-05-08T09:40:52.454+00:00",
"status": 401,
"error": "Unauthorized",
"path": "/api/alarms"
}
Angular:
如果我们从 angular 应用程序调用相同的 API,它会给出错误,但错误消息和状态代码不相同
{
"headers": {
"normalizedNames": {},
"lazyUpdate": null,
"headers": {}
},
"status": 0,
"statusText": "Unknown Error",
"url": "http://localhost:8080/api/alarms?page=0&size=20",
"ok": false,
"name": "HttpErrorResponse",
"message": "Http failure response for http://localhost:8080/api/alarms?page=0&size=20: 0 Unknown Error",
"error": {
"isTrusted": true
}
}
服务器端代码:
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "unauthorized");
}
如何在angular应用程序中捕获服务器端指定的状态码和消息?
要在 angular 应用程序中捕获 sever-side 上指定的状态代码和消息,您可以在 angular 应用程序中使用 HTTP 拦截器处理此问题以处理所有全局错误在您的申请中。
请参考以下链接
问题已解决:
问题其实是CORS问题,解决问题可以参考this answer.
如果用户未登录,我将发送未经授权的状态代码 (401) 和一条消息 spring 启动应用程序,如果我们用邮递员测试它,该过程工作正常,但是,它没有与 angular.
一起工作例如:
有个API
http://localhost:8080/api/alarms?page=0&size=20
邮递员:
{
"timestamp": "2022-05-08T09:40:52.454+00:00",
"status": 401,
"error": "Unauthorized",
"path": "/api/alarms"
}
Angular:
如果我们从 angular 应用程序调用相同的 API,它会给出错误,但错误消息和状态代码不相同
{
"headers": {
"normalizedNames": {},
"lazyUpdate": null,
"headers": {}
},
"status": 0,
"statusText": "Unknown Error",
"url": "http://localhost:8080/api/alarms?page=0&size=20",
"ok": false,
"name": "HttpErrorResponse",
"message": "Http failure response for http://localhost:8080/api/alarms?page=0&size=20: 0 Unknown Error",
"error": {
"isTrusted": true
}
}
服务器端代码:
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "unauthorized");
}
如何在angular应用程序中捕获服务器端指定的状态码和消息?
要在 angular 应用程序中捕获 sever-side 上指定的状态代码和消息,您可以在 angular 应用程序中使用 HTTP 拦截器处理此问题以处理所有全局错误在您的申请中。
请参考以下链接
问题已解决:
问题其实是CORS问题,解决问题可以参考this answer.