2017-12-15 6 views
0

私はサーバーに請願書を送ろうとするが、私は401を返す - 許可なし。私は同じルートを使いますが、私の名前とユーザーに基本認証を使用します。 Angularではヘッダーを使用して私のauthoritzationを送信しようとしますが、いつも私は401を受け取りました。これは私のコードです:任意のideea?ありがとうございます。私の悪い英語のために申し訳ありません。角度http.get請願エラー401いいえauthoritzation

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

サーバーでHTTP基本認証が使用されていますか?認証に正しい資格情報を使用していますか? –

+0

こんにちは@Rohan私は同じユーザーとパスワードで郵便配達員を使用し、問題はありません。 Postmanが動作する場合、問題は自分のコードですか?ありがとう –

+0

郵便配達員にエンコードオプションを選択したかどうか確認してください。サーバーには暗号化された形式の資格情報が必要な場合があり、郵便配達員は内部でそれをやっています。 BcozコードはGET呼び出しで正しいと思われます。 –

答えて

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

実際には、サーバー側でどのようにエンコードされているかによって異なります。 異なるエンコードメカニズムが使用されている場合は、それに応じて変更されます。 それをチェックアウトするためには、次の手順に従います。POSTMANで

  1. 無効にBase64エンコーディング。

  2. 通常の認証情報でヒットするので、POSTMANで401が生成されます。

  3. 次に、btoaまたはBase64メソッドを試し、そのエンコードされたデータをPOSTMANで渡します。

  4. サーバー上でどのように処理されているか知りたければ、それに応じてコードを変更するだけです。

関連する問題