gpt4 book ai didi

Angular 6 HttpInterceptor 接口(interface)在生产中失败

转载 作者:行者123 更新时间:2023-12-02 10:23:48 24 4
gpt4 key购买 nike

我正在使用 HttpInterceptor 接口(interface)在 http 请愿上添加授权 header ,

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

constructor(
private localStorage: LocalStorageService,
private sessionStorage: SessionStorageService
) {
}

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (!request || !request.url || (/^http/.test(request.url) && !(SERVER_API_URL && request.url.startsWith(SERVER_API_URL)))) {
return next.handle(request);
}

const token = this.localStorage.retrieve('authenticationToken') || this.sessionStorage.retrieve('authenticationToken');
if (!!token) {
request = request.clone({
setHeaders: {
Authorization: 'Bearer ' + token
}
});
}
return next.handle(request);
}

}

我的应用程序模块

@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule,
VistaModule,
LayoutModule
],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: AuthInterceptor,
multi: true
}
],
bootstrap: [AppComponent]
})
export class AppModule { }

在本地它工作得很好,但在生成 prod dist 并上传到服务器时失败。任何请愿书都会获取 header :Object,status:401,statusText:“Unauthorized”

你能帮我吗?

最佳答案

声明您的拦截器在根目录中提供:

@Injectable({
providedIn: 'root'
})

而不是仅仅使用:

@Injectable()

这意味着您的拦截器将在您的所有应用程序中可用,以防您有另一个可能出现问题的产品模块。

查看更多详细信息:Angular Providers

关于Angular 6 HttpInterceptor 接口(interface)在生产中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50785530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com