Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 添加标题';授权';棱角分明_Angular_Token_Interceptor - Fatal编程技术网

Angular 添加标题';授权';棱角分明

Angular 添加标题';授权';棱角分明,angular,token,interceptor,Angular,Token,Interceptor,我想为每个请求设置标题 我正在使用request.clone设置Angular 7.2.14中的标题 import { HttpInterceptor, HttpEvent, HttpRequest, HttpHandler, HttpResponse, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Observable } from 'rxjs'; import { map } from 'rxjs

我想为每个请求设置标题

我正在使用request.clone设置Angular 7.2.14中的标题

import { HttpInterceptor, HttpEvent, HttpRequest, HttpHandler, HttpResponse, HttpErrorResponse, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

export class AuthInterceptor implements HttpInterceptor {


    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {        
        const token=localStorage.getItem('token');
        console.log(token);
        request.clone({ headers: request.headers.set('Authorization', token) });    
        return next.handle(request)
    }

}


import{HttpInterceptor,HttpEvent,HttpRequest,HttpHandler,HttpResponse,HttpErrorResponse,HttpHeaders}来自'@angular/common/http';
从“rxjs”导入{Observable};
从“rxjs/operators”导入{map};
导出类AuthInterceptor实现HttpInterceptor{
拦截(请求:HttpRequest,下一个:HttpHandler):可观察{
const token=localStorage.getItem('token');
console.log(令牌);
clone({headers:request.headers.set('Authorization',token)});
返回next.handle(请求)
}
}
我没有收到错误,但我可以看到授权头
请求。clone()
返回一个对象,不改变源

尝试将request.clone()作为参数传递

intercept(请求:HttpRequest,下一步:HttpHandler):可观察的{
const token=localStorage.getItem('token');
console.log(令牌);
返回next.handle(request.clone({headers:request.headers.set('Authorization',token)});)
}

您返回的是旧请求,而不是克隆的请求

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    const token = localStorage.getItem('token');
    request = request.clone({
        setHeaders: {
            Authorization: `Bearer ${token}`
        }
    });

    return next.handle(request);
}
intercept(请求:HttpRequest,下一步:HttpHandler):可观察{
const token=localStorage.getItem('token');
request=request.clone({
集合标题:{
授权:`Bearer${token}`
}
});
下一步返回。处理(请求);
}

您调用request.clone(),但忽略了结果,即新的克隆请求,其标题为。已尝试但控制台上出现错误,被CORS Policy阻止,这是一个完全不同的问题。谷歌搜索CORS。对飞行前请求的响应可能不允许使用Authoriation标头。看得到同样的错误。我已经告诉过你这个错误是一个完全不同的问题。谷歌搜索CORS。对飞行前请求的响应可能不允许使用Authoriation标头。看见修复前端代码不会神奇地修复服务器配置。已尝试,但被CORS策略阻止