我在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添加基本授权,还是直接将其添加到更新方法?
答案 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
常数。
答案 2 :(得分:4)
只需在标题中添加您的令牌/授权,就像这样 -
let httpHeaders = new HttpHeaders()
.set('authorization', this.authorizationHeaderValue)
.set('Content-Type', application/json);
两者都有set和append等方法。 set构造一个具有新值的新主体,append构造一个带有附加值的新主体
PS:我假设变量(this.authorizationHeaderValue)值包含Bearer
或Basic
或其他任何需要的值,请相应更改。
如需更多阅读
答案 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');