Angular http.get请愿错误401无权限化

时间:2017-12-15 09:37:43

标签: angular get angular2-routing frontend

我尝试向服务器发送请愿书GET,但他给我回复401 - 没有授权。邮递员我使用相同的路线,但使用我的名字和用户的基本身份验证。在Angular中,我尝试使用标题发送我的授权,但我总是收到401.这是我的代码:任何ideea?谢谢大家。抱歉我的英语不好。

  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);
}

1 个答案:

答案 0 :(得分:0)

请尝试按照以下方式传递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. 一旦您了解它是如何在服务器上完成的,那么您只需相应地更改代码。