代码之家  ›  专栏  ›  技术社区  ›  BraveButter

HTTP请求头映射为空

  •  4
  • BraveButter  · 技术社区  · 6 年前

    我正在尝试向API发送HTTP请求,而API确实需要特定的头才能工作。

    直到现在,我尝试了一些不同的方法来发送头。起初,我试图在httpoptions对象中设置头并将其传递给我的'httpclient.get()'函数,但这不起作用。

    因为我对angular和typescript非常陌生,所以我读了一些关于如何发送HTTP请求的文章。拦截器应该是我正确的选择,我修改了我的代码。

    以下是我提出请求的功能:

    constructor(private http: HttpClient) {}
    
    public getVersions() {
        let url = baseUrl + '/docs/versions';
    
        this.http
            .get(url)
            .subscribe(data =>{
                console.log(data);
            }, err => {
                console.log(err);
            });
    
        return true;
    }
    

    音符: return true; 这里只是测试用的吗

    这是我的拦截器

    import { Injectable } from '@angular/core';
    import { HttpInterceptor, HttpHeaders, HttpHandler, HttpRequest, HttpEvent, HttpResponse }
        from '@angular/common/http';
    
    import { Observable } from 'rxjs';
    import 'rxjs';
    
    @Injectable()
    export class MyHttpInterceptor implements HttpInterceptor {
        intercept(
            req: HttpRequest<any>,
            next: HttpHandler
        ): Observable<HttpEvent<any>> {
    
            console.log('intercept http request');
            const duplicate = req.clone({
                headers: new HttpHeaders().set('dummy-header', 'dummy-header-info')
            });
    
            console.log(duplicate.headers.get('dummy-header');
            console.log('new header request');
    
            return next.handle(duplicate);
        }
    }
    

    这是我的控制台日志

    intercept http request
    http-interceptor.ts:19 dummy-header-info
    http-interceptor.ts:20 new header request
    zone.js:2969 OPTIONS http://192.168.111.106:8089/docs/versions 0 ()
    api.service.ts:21 
    HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: null, ok: false, …}
    error : ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
    headers : HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
    message : "Http failure response for (unknown url): 0 Unknown Error"
    name : "HttpErrorResponse"
    ok : false
    status : 0
    statusText : "Unknown Error"
    url : null
    __proto__ : HttpResponseBase
    

    由于缺少请求头,请求失败。 所以对我来说,标题映射看起来是一个空映射。但为什么,我的错误在哪里?

    2 回复  |  直到 6 年前
        1
  •  0
  •   KennyXu    6 年前

    headers:new httpheaders().append(“dummy-header”,“dummy header info”)。

    或const duplicate=req.clone(setheaders:dummy heafer-info');

        2
  •  -1
  •   Tim Diekmann suresh madaparthi    6 年前

    尝试

    const duplicate = req.clone({
    setHeaders: {
            dummy-header: `dummy-heafer-info`
          }
    });