Angular 6 HTTP使用HTTP基本身份验证获取请求

Yup*_*Yup 4 javascript rest json typescript angular

我正在尝试使用基本身份验证访问URL 。

URL返回JSON数据。

如何在下面的http请求中添加用户名和密码?

private postsURL = "https://jsonExample/posts";

getPosts(): Observable<AObjects []>{
    return this.http.get<AObjects[]>(this.postsURL); 
}
Run Code Online (Sandbox Code Playgroud)

Dan*_* W. 6

请参阅https://angular.io/guide/httphttps://v6.angular.io/guide/http#adding-headers

import { HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type':  'application/json',
    'Authorization': 'Basic ' + btoa('username:password')
  })
};
Run Code Online (Sandbox Code Playgroud)

然后使用标题:

return this.http.get<AObjects[]>(this.postsURL, httpOptions); 
Run Code Online (Sandbox Code Playgroud)

  • @YupYup 请针对新问题提出新问题。基本身份验证和 CORS 是两个截然不同的东西。 (3认同)
  • 多谢 。我试试这个,我得到这个作为响应 Access to XMLHttpRequest at 'ww.xxxxxx.de/re' from origin 'http://localhost:9000' has been Blocked by CORS policy: Response to preflight request does not pass access control检查:它没有 HTTP ok 状态。 (2认同)

Moh*_*deh 6

我不知道您要在获得授权后究竟要做什么,但是要使用具有基本身份验证的简单调用来获得授权,您需要这样做:

let authorizationData = 'Basic ' + btoa(username + ':' + password);

const headerOptions = {
    headers: new HttpHeaders({
        'Content-Type':  'application/json',
        'Authorization': authorizationData
    })
};

this.http
    .get('{{url}}', { headers: headerOptions })
    .subscribe(
        data => { // json data
            console.log('Success: ', data);
        },
        error => {
            console.log('Error: ', error);
        });
Run Code Online (Sandbox Code Playgroud)