- 58
- 0
- angular是4.3.6的。
- 代码是参考网上的:
InterceptorService
// http 请求拦截器
import {Injectable, Pipe} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
import {ErrorObservable} from 'rxjs/observable/ErrorObservable';
import {LocalStorageService} from './local-storage.service';
import {mergeMap} from 'rxjs/operator/mergeMap';
@Injectable()
export class InterceptorService implements HttpInterceptor {
constructor(private storage: LocalStorageService) {
}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
// 排除不需要进行token验证的接口
const excludeUrl = ['login', 'unregistration']; // 登入和登出不需要token验证
let isNotVerifyToken = false; // 排除状态
excludeUrl.map(item => {
if (request.url.indexOf(item) > -1) {
isNotVerifyToken = true;
}
});
if (!isNotVerifyToken) {
// 此处获取localstorage的Token
if (this.storage.getToken()) {
const promise = this.storage.getToken();
const authReq = request.clone({
headers: request.headers.set('Authorization', 'token:' + promise)
});
return next.handle(authReq);
}
} else {
}
}
}
app.module.ts
import {HTTP_INTERCEPTORS, HttpClientModule, HttpClient} from '@angular/common/http';
@NgModule({
imports: [
HttpModule,
HttpClientModule,
],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: InterceptorService,
multi: true
}
]
})
没报错,就是不运行,不知道咋回事...
- 共 0 条
- 全部回答
-
暖夏清风 普通会员 1楼
在Angular 4中,HTTP拦截器主要用于拦截和处理HTTP请求和响应。如果你使用的是HttpClient或者HttpClientModule,但是HTTP拦截器无法工作,可能有以下几种原因:
- 检查一下HTTP拦截器是否正确安装。在你的Angular组件的
providers数组中添加HttpClientModule和HttpClient服务,然后在@Component标签中注入它们。
```typescript import { HttpClientModule } from '@angular/common/http';
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private http: HttpClient) {}
ngOnInit() { this.http.get('https://jsonplaceholder.typicode.com/todos/1') .subscribe(data => { console.log(data); }); } } ```
- 检查一下HTTP拦截器是否在期望的位置。确保你将HTTP拦截器添加到了
httpModule的providers数组中。
```typescript import { HttpClientModule } from '@angular/common/http';
@NgModule({ imports: [ HttpClientModule ], // ... }) export class AppModule { } ```
-
检查你的HTTP请求是否正确。确保你的HTTP请求头正确,包括请求方法(GET、POST等)、请求URL、请求头等。
-
检查你的HTTP请求是否成功。在你的HTTP请求的回调函数中,检查返回的状态码和响应体。
```typescript import { HttpClient } from '@angular/common/http';
export class AppComponent { constructor(private http: HttpClient) {}
ngOnInit() { this.http.get('https://jsonplaceholder.typicode.com/todos/1') .subscribe(data => { console.log(data); }) .catch(error => { console.log(error); }); } } ```
- 检查你的Angular组件是否正确注册。确保你在组件的
ngOnInit方法中正确注册你的HTTP请求处理器。
```typescript import { Component } from '@angular/core';
@Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { constructor(private http: HttpClient) {}
ngOnInit() { this.http.get('https://jsonplaceholder.typicode.com/todos/1') .subscribe(data => { console.log(data); }) .catch(error => { console.log(error); }); } } ```
以上就是检查HTTP拦截器是否工作的一些常见方法。如果你仍然无法解决问题,可能需要更深入地检查你的代码。
- 检查一下HTTP拦截器是否正确安装。在你的Angular组件的
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
