我需要刷新令牌,但是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)
console.log(errorResponse)
答案 0 :(得分:0)
似乎您已经在解析错误对象,然后将解析结果保存到错误变量中。因此,在这种情况下,为什么需要使用 error.error ?您不能像这样使用 error 变量吗?:-
替换
console.log(error.error);
通过
console.log(error);