Angular 6 - httpClient在httpOptions中传递基本身份验证

Mar*_*018 14 typescript angular angular6

我在Angular 6中有一个服务,我正在尝试更改记录,但它说我没有被授权.

现在我有这个:

const httpOptions = {
  headers: new HttpHeaders({'Content-Type': 'application/json'})
};

  update(id, title, content) {
    const updateData = { id: id, title: title, content: content };
      return this.http.put(`http://myurl/${id}`, updateData, httpOptions);
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是:

如何向httpOptions添加基本授权或直接将其添加到更新方法?

Pra*_*chi 25

您可以通过在标头中附加基本授权来添加基本授权,如下所示:

var headers_object = new HttpHeaders();
headers_object.append('Content-Type', 'application/json');
headers_object.append("Authorization", "Basic " + btoa("username:password"));

const httpOptions = {
  headers: headers_object
};
Run Code Online (Sandbox Code Playgroud)

  • `new Headers();`应该是`new HttpHeaders()` (3认同)

Meh*_*oha 6

查看angular.io文档,这非常简单。

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'Basic my-auth-token'
  })
};
Run Code Online (Sandbox Code Playgroud)

您可以像平常一样使用httpOptions常量。

有关更多信息:https : //angular.io/guide/http#adding-headers


Par*_*ain 5

只需在标头中添加令牌/授权-

let httpHeaders = new HttpHeaders()
              .set('authorization', this.authorizationHeaderValue)
              .set('Content-Type', application/json); 
Run Code Online (Sandbox Code Playgroud)

两者都有诸如set和append之类的方法。set构造一个具有新值的新主体,append构造一个具有附加值的新主体

PS:在这里,我假设变量(this.authorizationHeaderValue)的值包含诸如BearerBasic或其他任何需要的值,请相应地对其进行更改。

欲了解更多信息,请点击这里

  • 投票人,请您解释一下原因? (3认同)