Javascript 无法捕获AngularJS 2中的401个错误

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:

在过去的一周里,我一直在使用AngularJs2应用程序。此应用程序有一个名为“CabBookingService”的服务,它通过http get()调用从后端获取数据。后端是基于REST的,并使用SpringSecurityOAuth2实现进行身份验证

@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");
?>