HttpInterceptor> HttpErrorResponse不返回请求结果

时间:2019-07-27 18:38:16

标签: angular angular-http-interceptors

我需要刷新令牌,但是HttpErrorResponse不会返回请求的结果。

获取http://127.0.0.1:8000/api/pdv 返回响应:{“ token_error”:“ token_expired”}

但是,当我的令牌过期时,我会收到(跨域请求被阻止)。只是这种情况。

这是我的配置
config / cors我用的是barryvdh / laravel-cors

'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,

我尝试使用( obs:console.log(error.error)undefined

来获取响应
const error = (typeof errorResponse.error !== 'object') ? JSON.parse(errorResponse.error) : errorResponse.error;
                    console.log(error.error)

        return next.handle(request)
            .pipe(
                catchError((errorResponse: HttpErrorResponse) => {
                    // return next.handle(request)
                    const error = (typeof errorResponse.error !== 'object') ? JSON.parse(errorResponse.error) : errorResponse.error;
                    console.log(error.error)
                    // return ;
                    // || (errorResponse.status === 0)
                    if (errorResponse.status === 401 && error.error === 'token_expired') {
                        const http = this.injector.get(HttpClient);
                        return http.post<any>(`${API}/auth/refresh`, {})
                            .pipe(
                                flatMap(data => {
                                    localStorage.setItem("token", data.token)
                                    const authRequest = request.clone({ setHeaders: { 'Authorization': `Bearer ${data.token}` } })
                                    return next.handle(authRequest)
                                })
                            )
                    }

                    return throwError(errorResponse);
                })
            )

    }

我需要获得此返回“ token_expired”,然后刷新令牌。

console.log(error.error)

enter image description here

console.log(errorResponse)

enter image description here

1 个答案:

答案 0 :(得分:0)

似乎您已经在解析错误对象,然后将解析结果保存到错误变量中。因此,在这种情况下,为什么需要使用 error.error ?您不能像这样使用 error 变量吗?:-

替换

console.log(error.error);

通过

console.log(error);