【问题标题】:Angular http.get petition error 401 no authoritzationAngular http.get 请愿错误 401 无授权
【发布时间】:2025-11-30 22:50:01
【问题描述】:

我尝试向服务器发送请求 GET,但他返回给我 401 - 无授权。在邮递员上,我使用相同的路线,但使用我的姓名和用户的基本身份验证。在 Angular 中,我尝试使用标头发送我的授权,但我总是收到 401。这是我的代码:有什么想法吗?谢谢大家。对不起我的英语不好。

  public get(route, skipToken?: boolean) {
    const me = this;

    let options;
    if (!skipToken) {
        options = {
            headers:  {
                'Content-Type': 'application/json',
                'Authorization': 'Basic myuser:mypswd',
                'Access-Control-Allow-Origin': '*',
                'withCredentials': 'true',
                'Access-Control-Allow-Headers': 'Authorization'},
            search: me.getSearchParamToken()
        };
    } else {
        options = {
            headers:  {
                'Content-Type': 'application/json', 
                'Authorization': 'Basic myuser:mypswd',
                'Access-Control-Allow-Origin': '*',
                'withCredentials': 'true', 
                'Access-Control-Allow-Headers': 'Authorization'}
        };
    }
    return me.http.get(route, options).map(response => response.json() || {}).catch(me.handleError);
}

【问题讨论】:

  • 您确定您的服务器使用 HTTP 基本身份验证吗?而且您正在使用正确的凭据进行身份验证?
  • 嗨@Rohan 我使用邮递员,用户名和密码相同,没有问题。如果邮递员工作,问题是我的代码?谢谢
  • 请确认您是否在邮递员中选择了任何编码选项。可能是服务器需要您的编码格式的凭据,而邮递员正在内部进行。 Bcoz 代码似乎对于 GET 调用是正确的。
  • @Rohan 实际我查看标头和邮递员在 base64 中转换用户和密码?我尝试使用此代码但不起作用.... 可以查看所有标题吗?谢谢

标签: angular get angular2-routing frontend


【解决方案1】:

请尝试以下方式传递 Base64 编码的标头。

var headers = new Headers();
headers.append('Content-Type': 'application/json;charset=UTF-8');
headers.append('Authorization', 'Basic '+btoa(username + ':' + password));
this.http.get(URL,headers);

实际上这将取决于它在服务器端的编码方式。 如果使用任何不同的编码机制,那么它将相应地改变。 为了检查它,您可以按照以下步骤操作:

  1. 在 POSTMAN 中禁用 Base64 编码。

  2. 使用普通凭据点击,因此它会在 POSTMAN 上生成 401。

  3. 然后尝试使用 btoa 或 Base64 方法并使用 POSTMAN 传递该编码数据。

  4. 一旦您了解了它是如何在服务器上完成的,那么您只需相应地更改您的代码。

【讨论】: