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

角HTTP get中的Corrs问题

  •  -1
  • SmartestVEGA  · 技术社区  · 7 年前

    我正在尝试按如下方式调用api:

    let headers = new Headers();
    headers.append('Authorization', `bearer `+this.getTokenFromStorage());
    headers.append('Content-Type', 'application/json; charset=utf-8');
    headers.append('Access-Control-Allow-Origin', '*');
    headers.append('Access-Control-Allow-Methods', 'GET');
    let options = new RequestOptions({ headers: headers });
    return this.http.get(Appconfig.HISURL + 'api/User/GetUserDetails/' + soeid, options);
    

    错误如下所示

    err=HttpErrorResponse{headers:HttpHeaders,状态:401, 状态文本:“未授权”,网址: " http://localhost:54721/api/User/GetUserDetails/MA12345 “,好:假, }

    但是我接受这些值并将其传递给POSTMAN,它在没有任何问题的情况下命中了API,我遗漏了什么?

    3 回复  |  直到 7 年前
        1
  •  1
  •   David    7 年前

    问题是你正在使用新的 HttpClient (从你得到 HttpErrorResponse ),但传入了错误的头实例:您正在使用 Headers (角度2-4)而不是 HttpHeaders (角度4-6)

    试试看

    import {HttpHeaders} from '@angular/common.http;
    
    //...
    
    let headers = new HttpHeaders().set('Authorization', `bearer `+this.getTokenFromStorage());
    
    return this.http.get(Appconfig.HISURL + 'api/User/GetUserDetails/' + soeid, {headers});
    

    也通过了 Access-Control-... 头客户端是无用的,因为它们应该设置为服务器端

        2
  •  4
  •   Pierre Berger    7 年前

    你试过看吗 proxy conf ?

    创建文件 proxy.conf.json 像这样的:

     {
      "/api": {
        "target": "http://localhost:54721",
        "secure": false,
        "logLevel": "debug",
        "changeOrigin": true
      }
    

    然后你只需要在没有任何CORS头的情况下调用API。

    别忘了加上 --proxy-config proxy.conf.json 开始脚本。

        3
  •  1
  •   Aniket Avhad    7 年前

    试试这个,

    let url = 'API_URL';
    let options = new RequestOptions({ headers: this.getHeadersWithAuthToken() });
    return this.http.get(url,options).map(response => response.json());
    
    getHeadersWithAuthToken(): Headers {
        return new Headers(
          {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Methods': '*',
            'Access-Control-Allow-Headers': '*',
            'Access-Control-Allow-Origin': '*',
            'Authorization': `bearer `+localStorage.getItem("token")
          });
      }