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

时间:2018-06-05 07:52:47

标签: angular typescript 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);
  }

我的问题是:

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

7 个答案:

答案 0 :(得分:15)

您可以在标题中附加基本授权,如下所示:

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
};

答案 1 :(得分:6)

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

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

你可以像你一样使用httpOptions常数。

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

答案 2 :(得分:4)

只需在标题中添加您的令牌/授权,就像这样 -

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

两者都有set和append等方法。 set构造一个具有新值的新主体,append构造一个带有附加值的新主体

PS:我假设变量(this.authorizationHeaderValue)值包含BearerBasic或其他任何需要的值,请相应更改。

如需更多阅读

答案 3 :(得分:1)

const httpOptions = {
  headers: new HttpHeaders(
    {
      'Content-Type': 'application/json',
      'Authorization': `Basic ` + btoa('user:password'),
    }
  )
};


return this.http.post<any>(
      `apilink`,{},
      httpOptions
    ).pipe(map(res => {
      return res;
}));

答案 4 :(得分:0)

httpClient中通过httpOptions传递基本身份验证的HttpClient在Angular 6中有所不同

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

const httpOptions = {
  headers: httpHeaders
};

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

答案 5 :(得分:0)

从'@ angular / common / http'导入{HttpClient,HttpHeaders};

var headers = new HttpHeaders();

var token = localStorage.getItem('token');

headers.append('Content-Type','application / json');

headers.append(“ Authorization”,“ Basic” +令牌));

const httpOptions = {   标头:标头 };

答案 6 :(得分:0)

许多服务器需要额外的标头来进行保存操作。例如,服务器可能需要授权令牌或“Content-Type”标头来明确声明请求正文的 MIME 类型。就您而言,您可以通过以下代码进行基本授权。

import { HttpHeaders } from '@angular/common/http'; 
const httpOptions = {headers: new HttpHeaders({
'Content-Type':  'application/json',
Authorization: 'my-auth-token' })};

您可以在发出下一个请求之前更新授权标头

httpOptions.headers =  httpOptions.headers.set('Authorization', 'my-new-auth-token');