Javascript 无法捕获AngularJS 2中的401个错误
在过去的一周里,我一直在使用AngularJs2应用程序。此应用程序有一个名为“CabBookingService”的服务,它通过http get()调用从后端获取数据。后端是基于REST的,并使用SpringSecurityOAuth2实现进行身份验证Javascript 无法捕获AngularJS 2中的401个错误,javascript,angularjs,spring,authentication,observable,Javascript,Angularjs,Spring,Authentication,Observable,在过去的一周里,我一直在使用AngularJs2应用程序。此应用程序有一个名为“CabBookingService”的服务,它通过http get()调用从后端获取数据。后端是基于REST的,并使用SpringSecurityOAuth2实现进行身份验证 @Injectable() export class CabBookingService { private accessToken, bookingsUrl, bookings; constructor(private _logger:
@Injectable()
export class CabBookingService {
private accessToken, bookingsUrl, bookings;
constructor(private _logger: Logger, private _http: Http) {
this.accessToken = localStorage.getItem('cabservice_access_token');
this.bookingsUrl = "http://52.3.51.119:8081/dynamo-server/dynamo/api/cabservice/bookings/list/submitted?access_token=" + this.accessToken;
}
getCabBookings() {
this._logger.log("Getting Cab Bookings ...accessToken, bookingsUrl = " + this.accessToken + "," + this.bookingsUrl);
return this._http.get(this.bookingsUrl)
.map(res => {
this._logger.log("response status = " + res.status);
return <CabBooking[]> res.json().cabBooking;
})
.catch(this.handleError);
}
private handleError(error: Response) {
console.error("Error occured in getting bookings...response: type, ok, url, status, headers: " + error.type + ", " + error.ok + ", " +
error.url + ", " + error.status + ", " + JSON.stringify(error.headers));
return Observable.throw(error.json().headers || 'Server error');
}
}
当令牌过期并且我调用服务获取数据时,服务器抛出401错误。通过查看Chrome浏览器开发者工具网络选项卡可以确认这一点
我的问题是,我无法捕获这个错误。当我在handleError()方法中记录错误时,我得到以下结果:
Error occured in getting bookings...response: type, ok, url, status, headers: 3, undefined, null, 200, "[]"
也就是说,日志显示的是200 HTTP代码,而不是401。如果我需要做任何不同的事情,请告诉我。检查网络日志中的HTTP方法。如果你正在编写一个HTML5应用程序,那么在你的服务器中允许“选项”用于。例如,您可以将其添加到PHP服务器页面
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, Content-Type, Authorization");
header("Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE");
?>
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, Content-Type, Authorization");
header("Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS, DELETE");
?>