2017-12-06 52 views
0

私はサーバーにリクエストを行いたいが、常に401を取得したい。HTTP認証要求は常に401を返します

私がPostmanで試してみると、すべてうまく動作します。

request({url: 'https://' + username + ':' + password + '@api.fastspring.com/accounts/'}, function (error, response, body) { 
    if(response.statusCode == 200){ 
     console.log('it worked!') 
     res.writeHead(200, { "Content-Type": "text/html" }); 
     res.write("it worked", 'utf-8'); 
     res.end(); 
    } else { 
     console.log('error: '+ response.statusCode) 
     console.log('error Text: '+ error) 
     console.log(body) 
     res.writeHead(500, { "Content-Type": "text/html" }); 
     res.write("Error!", 'utf-8'); 
     res.end(); 
    } 
}); 
+0

401レスポンスを受信すると、「認証されていない(認証されていないか、間違って認証されていますが、再認証してから再試行してください)」というメッセージが表示されます。 – Alireza

+0

@LinasMickeviciusいいえ403. – Alireza

+0

はいユーザー名とパスワードが正しいです。私はPostmanの基本的な認証でそれを試してみました。 – johannesha

答えて

-1

401 'はアクセス' ではありません。したがって、認証が機能していて、資格情報が正しい(さもなければ403を持っていたはずですが)、サーバーはこれらの条件でこのリソースへのアクセスを拒否しています。

これがなぜ必要なのかを調べる最も簡単な方法は、サーバーログを確認することですが、これは不可能です。これらの資格情報を使用してURLに正常にアクセスしたときに拒否される可能性がある理由の一覧は、次のとおりです。

  • あなたは別のリクエストタイプを使用しています。 POST対GET。たぶん1つしか許可されません。
  • 異なるIPアドレスからアクセスしています。可能性として、サーバーは資格情報だけでなくIP経由のアクセスも制限しています。
  • あなたのURLは微妙に異なります。いくつかのサーバーは、/、または明示的に/index.htmlまたはそれに類するものを追加していることについては不安です。
  • サーバーはこの状況ではhttpsが必要ですが、httpを使用しています。
  • サーバーには1つのクライアントで追加されたホストヘッダーが必要ですが、別のサーバーでは追加されません。これは、複数のバーチャルホストとサーバー上で発生する可能性があり、またはいくつかのJavaは確実に見つけるためにあなたの最善の方法は、サーバーのログをチェックすることです
  • あなたは

を認識していないいくつかの他のアクセスルールをアプリ。