Json 角度6:自定义标题';授权';不工作

Json 角度6:自定义标题';授权';不工作,json,oauth-2.0,httprequest,angular6,custom-headers,Json,Oauth 2.0,Httprequest,Angular6,Custom Headers,我是Angular 6的新手,我有一个关于自定义标题授权的问题。我正在授权头中设置Oauth2令牌,但它不符合请求。我用谷歌搜索了很多次,但没有一个解决方案能解决我的问题。下面我添加代码 请求中的自定义标头: getCurrentUser() { let token = this.cookie.get('token'); return this.http.get<User[]>(serverurl + 'getUser',{ headers: new

我是Angular 6的新手,我有一个关于自定义标题授权的问题。我正在授权头中设置Oauth2令牌,但它不符合请求。我用谷歌搜索了很多次,但没有一个解决方案能解决我的问题。下面我添加代码

请求中的自定义标头:

getCurrentUser() {
    let token = this.cookie.get('token');
    return this.http.get<User[]>(serverurl + 'getUser',{
        headers: new HttpHeaders().set('Authorization', token),
    }) // this.httpOptions
      .pipe(
      tap(user => this.log(`fetched current user`)),
      catchError(this.handleError('currentUser', []))
      );
  }
getCurrentUser(){
让token=this.cookie.get('token');
返回此.http.get(serverurl+'getUser'{
headers:new HttpHeaders().set('Authorization',token),
})//this.httpOptions
.烟斗(
轻触(user=>this.log(`fetched current user`)),
catchError(this.handleError('currentUser',[]))
);
}
作为请求拦截器:

import { AuthService } from '../services/auth.service';
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { CookieService } from 'ngx-cookie-service';

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

    constructor(private auth: AuthService, private cookie: CookieService) { }

    intercept(req: HttpRequest<any>, next: HttpHandler) {
        let token = this.cookie.get('token');
        let changedRequest = req;
        // HttpHeader object immutable - copy values
        const headerSettings: { [name: string]: string | string[]; } = {};

        if (token) {
            headerSettings['Authorization'] = 'Bearer ' + token;
        }
        // headerSettings['Content-Type'] = 'application/json';
        const newHeader = new HttpHeaders(headerSettings);
        changedRequest = req.clone({
            headers: newHeader
        });
        return next.handle(changedRequest);
    }
}
从“../services/auth.service”导入{AuthService};
从“@angular/core”导入{Injectable};
从'@angular/common/http'导入{HttpEvent,HttpInterceptor,HttpHandler,HttpRequest,HttpHeaders};
从“rxjs”导入{Observable};
从“ngx cookie服务”导入{CookieService};
@可注射()
导出类AuthInterceptor实现HttpInterceptor{
构造函数(私有auth:AuthService,私有cookie:CookieService){}
截取(请求:HttpRequest

授权令牌被添加到
访问控制请求头中,而不是
授权本身。我在请求中没有看到授权头


提前感谢…!

在搜索了大量信息后,我找到了以下解决方案:

代码中没有问题,因为您正在使用
交叉源
请求,它首先将
选项
请求发送到服务器。为了解决此问题,我在服务器配置部分添加了以下代码:

.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
它与Angular 6无关。基本上,您需要允许服务器端的所有URL使用OPTIONS方法。它可以正常工作。:)