首页 > 解决方案 > 在Angular 6中将标头添加到http.get

问题描述

我正在尝试修改 deerawan 的工作示例,以包含另一个需要标题的网站的标题。我得到了下面的解决方案,它似乎工作得很好。但是当我添加时subscribe(),它仍然有效,但我在控制台中遇到异常:

我应该怎么做才能修复此警告消息?谢谢你。

原始代码:

export class UserService {

  private serviceUrl = 'https://jsonplaceholder.typicode.com/users';

  constructor(private http: HttpClient) { }

  getUser(): Observable<User[]> {
    return this.http.get<User[]>(this.serviceUrl);
  }
}

解决方案代码:

export class NWSForecast {
  private config = {
    headers: {
      'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36'
    }
  };

  private serviceUrl = 'https://api.weather.gov/gridpoints/OKX/36,38/forecast';

  constructor(private http: HttpClient) { }

  getUser(): Observable<any>  {
    // first argument is URL, put config as second argument
    return this.http.get<any>(this.serviceUrl, this.config);
  }
}

修改解决方案以捕获响应。但它有例外:

export class AppComponent {
  private config = {
    headers: {
      'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36'
    }
  };
  weathers: any;
  private serviceUrl = 'https://api.weather.gov/gridpoints/OKX/36,38/forecast';

  constructor(private http: HttpClient) { }

  getWeather() {
    this.http.get<Weather>(this.serviceUrl, this.config).subscribe(
      val => {
        this.weathers = val;
      console.log('this.weather ====> ', this.weathers);
      });
    }
}

控制台中的错误消息: Refused to set unsafe header "User-Agent" http.js:1436

标签: angulartypescriptangular-httpclient

解决方案


您收到错误是因为您需要将 URL 作为第一个参数提供给get.

 this.http.get<Weather>(url, this.config);

推荐阅读