angular - Angular 4拦截器未设置标头
问题描述
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const jwt = localStorage.getItem('jwt');
if (!jwt) {
req = req.clone(
{
headers: req.headers.set('Authorization', 'Bearer ' + jwt)
});
}
console.log(req);
return next
.handle(req)
.do(evt => {
if (evt instanceof HttpResponse) {
}
})
.catch(err => {
return Observable.throw(err);
});
}
这是我的 intrceptor 类,在 chrome 请求中看起来像这样: chrome screenchot
CURL 看起来像这样(从 chrome devtools 复制):
curl "http://192.168.10.220:8090/api/portal/getMojeRezerwacjeList" -X
OPTIONS
-H "Access-Control-Request-Method: GET"
-H "Origin: http://localhost:4200"
-H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
-H "Access-Control-Request-Headers: authorization" --compressed
显然没有带有 Bearer 和 jwt 令牌的标题,我一直收到 401 错误
解决方案
尝试 setHeaders 而不是 headers
const newRequest = req.clone({ setHeaders: { 'Authorization': 'Bearer' + token}
推荐阅读
- python - 在 post 请求 python 中传递 json 以提交文件
- excel - Power BI 给没有 Power BI 的用户
- sql-server - 未定义的类常量“SQLSRV_ENCODING_SYSTEM”
- networking - GCP:如何通过主机名访问共享 VPC 中的虚拟机
- ruby-on-rails - 如何使用模型中的属性在 Rails 模型上设置只读?
- spring-boot - Spring Boot 调试、警告和错误日志停止工作
- php - 使用 PHP 和 cURL 登录 Amazon SellerCentral
- kentico - Kentico 11 - 宏在营销电子邮件中不起作用
- reactjs - React JS - onChange 触发两次
- laravel - 如何在laravel中使用两个或多个组合进行过滤