【发布时间】:2019-12-05 16:26:33
【问题描述】:
我需要刷新我的令牌,但 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,
中间件组
'api' => [
\Barryvdh\Cors\HandleCors::class,
'throttle:60,1',
'bindings',
],
我尝试用 (obs: console.log(error.error) is 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)
【问题讨论】:
-
你的意思是 console.log(error.error) 什么都不打印吗?
-
您是否收到任何回应?检查浏览器开发者控制台和网络选项卡。这可能是CORS 问题。 About the same origin policy.
-
@SumitParakh 是的,打印未定义。
-
那么错误代码部分被击中了吗?你能准确地发布你收到的错误吗?
-
@AJT_82 只是 error.error 未定义。但 api 响应是 {"token_error":"token_expired"} 我需要得到这个响应。
标签: angular angular-http-interceptors