Angular +Ionic关于token拦截报错
一,报错内容
二,解决方法
1,判断token情况
if(token){
if (urlList.indexOf(url) === -1) {
console.log(token)
customerHeaders['Authorization'] = token;
// customerHeaders['token'] = token;
//customerHeaders['QZH_TOKEN'] = token;//修改
}
}
2,修改路径
3,全部文件
import { Injectable } from '@angular/core';
import {
HttpInterceptor,
HttpHandler,
HttpRequest,
HttpResponse,
} from '@angular/common/http';
import * as qs from 'qs';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import { Router } from '@angular/router';
import { StorageService, RestService } from '../service';
import { environment } from '../../environments/environment';
@Injectable({
providedIn: 'root'
})
export class SetTokenHeaderInterceptor implements HttpInterceptor {
constructor(
private token: StorageService,
private router: Router,
private rest: RestService, ) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<any> {
const token = localStorage.getItem("token")
// const token = localStorage.getItem("authToken")
const { body, method, headers, url } = req;
const customerHeaders = {
// Authorization: token,
'Content-Type': headers.get('Content-Type') || 'application/x-www-form-urlencoded',
// 'Access-Control-Allow-Origin': '*',
// 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
// 'Accept': 'application/json',
};
const urlList = [
this.rest.homepageList,//首页
this.rest.getHotSell,//热销
this.rest.getProDetail,//详情
this.rest.getstoreList,
this.rest.getMarketLable,
this.rest.getMarketClass,
this.rest.loginBytoken,
];
if(token){
if (urlList.indexOf(url) === -1) {
console.log(token)
customerHeaders['Authorization'] = token;
// customerHeaders['token'] = token;
//customerHeaders['QZH_TOKEN'] = token;//修改
}
}
const reqWithToken = req.clone({
// url: environment.apiUrl + url,
setHeaders: customerHeaders,
body: method.toLocaleLowerCase() === 'post' || !headers.get('Content-Type') ? qs.stringify(body) : body
});
return next.handle(reqWithToken)
.pipe(
tap(
(event) => {
if (event instanceof HttpResponse) {
const { status } = event.body;
switch (status) {
case 400:
this.router.navigate(['/login']);
// this.navCtrl.navigateRoot('/login');
break;
}
}
}
)
);
}
}