我正在尝试发送请求标头,特别是授权标头。授权标头应如下所示:
Authorization: Basic NTY2MTI0Og==在标头列表中。whereBasic表示是base64编码的。
我很肯定它确实被添加到了在 Angular 中提出的 get 请求中:
Request in Angular。
虽然我不确定是什么op。(顺便说一句,我还不允许嵌入图像)
它应该是这样的:来自标准的 Datasnap Delphi 项目
这是我的样子:在此处输入图片描述
如您所见,缺少 Authorization 标头。
错误
控制台错误:截图
Fiddler Raw 请求:截图
这就是我创建 Rest 调用的方式:
public authRestCall(auth: string): Observable<string> {
var headers = new HttpHeaders;
//HttpHeaders is immutable
headers = headers.append('Authorization', 'Basic ' + auth);
return this.http.get<string>(this.localUrl + 'DSAdmin/GetPlatformName', {headers: headers});
}
Run Code Online (Sandbox Code Playgroud)
我尝试这样做的另一种方法是创建一个这样的对象,在Angular 指南中描述
const httpOptions = {
headers: new HttpHeaders({
'Authorization': 'NTY2MTI0OnVuZGVmaW5lZA==' …Run Code Online (Sandbox Code Playgroud) 我知道也有人问过类似的问题。但我会解释其中的区别。
我有一个名为login()需要返回用户的函数。该函数调用另一个函数,该函数调用我的后端。该login()函数需要等待 Promise 完成才能返回 User。问题是,如果我把退货放入它then()会说:
[ts] 声明类型既不是“void”也不是“any”的函数必须返回一个值。
需要返回它,因为调用它的函数需要用户的 JWT。
简化代码:
login(user: User): User {
this.user = user;
//in between I fill some fields for the user
this.loginPromise().then(user => {
return user;
})
.catch(err => {
console.log(err);
//it doesn't make a difference wether I return a user here or not
}
loginPromise(): Promise<{}> {
var promise = new Promise(function(resolve, reject) {
this.restProvider.login(this.user)
.subscribe(result => {
const jwt = result.headers.get('JWT');
const config = { ... result.body …Run Code Online (Sandbox Code Playgroud)