【发布时间】:2019-02-21 00:28:44
【问题描述】:
我面临无法使用 JWT 拦截器进行 api 调用的问题。我得到了:
不支持内容类型“text/plain;charset=UTF-8”
我猜是因为 JWT 拦截器正在删除标头并添加 Bearer 的东西,这是我的 JWT 拦截器。
import { Injectable } from "@angular/core";
import {
HttpRequest,
HttpHandler,
HttpEvent,
HttpInterceptor
} from "@angular/common/http";
import { Observable } from "rxjs";
@Injectable()
export class JwtInterceptor implements HttpInterceptor {
intercept(
request: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
// add authorization header with jwt token if available
let credentials = JSON.parse(localStorage.getItem("credentials"));
console.log(JSON.stringify(credentials.accessToken));
if (credentials && credentials.accessToken) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${credentials.accessToken}`
}
});
}
return next.handle(request);
}
}
我尝试使用邮递员,如果我不理会这个标题,它会说同样的问题,但是当我添加 Content-Type application/json 它解决了问题,但是在 Angular 中我如何添加这个标题但是代替?
【问题讨论】:
-
添加
application/json的Content-Type有什么问题?setHeaders()完全替换所有标题。您是否在问如何添加/设置authorization标头并保留请求中的所有其他标头?
标签: angular typescript angular6