小编Pur*_*onk的帖子

Angular HttpClient 授权标头已创建但消失

问题

我正在尝试发送请求标头,特别是授权标头。授权标头应如下所示: 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)

delphi authorization http-headers ionic-framework angular

5
推荐指数
1
解决办法
696
查看次数

如何在 then() 中返回值

我知道也有人问过类似的问题。但我会解释其中的区别。

我有一个名为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)

rest promise typescript ionic-framework angular

4
推荐指数
1
解决办法
1万
查看次数