2017-05-09 22 views
2

私はHPアルムのREST APIに対して許可したい、私はこの仕事「SHOULD」、それはないと思う:認証がエラーをスロー:401(無資格情報は要求を見つかりませんでした。)

function performSignIn(){ 

let headers = new Headers(); 

headers.append('Content-Type', 'application/json'); 
headers.append('Accept', 'application/json'); 
headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password)); 

fetch(sign_in, {mode: 'no-cors', method:'POST', headers: headers}) 
    .then(response => response.json()) 
    .then(json => console.log(json)) 
    .catch(error => console.log('Authorization failed : ' + error.message)); 
} 

私は少し奇妙なエラーメッセージが出ます:(。資格情報の要求を認めなかった)

401を

これはXMLHttpRequestをして行って、HPのドキュメントからの例です: http://alm-help.saas.hpe.com/de/12.53/api_refs/REST/webframe.htm#signin-out_example.htm

私は何が間違っているのか分かりません。

感謝がたくさんです!デフォルトで

敬具、 ダニエル

答えて

2

fetch(…)は、資格情報を送信しません。あなたがexplicitly specify they should be sentする必要があります。

fetch(sign_in, {credentials: 'include' , method:'POST', headers: headers}) 
    .then(response => response.json()) 
    .then(json => console.log(json)) 
    .catch(error => console.log('Authorization failed : ' + error.message)); 
} 

また、偶然に、あなたは間違いなくmode: 'no-cors'を指定する必要はありません。その効果は、ブラウザに伝えることです。フロントエンドJavaScriptがこのリクエストからの応答にアクセスするのをブロックします。

-1

ありがとうございました!しかし、「no-cors」に関しては、次のエラーメッセージが表示されます。

プリフライト要求に応答しても、アクセス制御チェックに合格しません。要求されたリソースには「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://127.0.0.1:3000'はアクセスできません。レスポンスにはHTTPステータスコード501があります。不透明なレスポンスが必要な場合は、リクエストのモードを 'no-cors'に設定してCORSを無効にしてリソースをフェッチします。

「ノーコア」は助けになると思っていましたが、実際はそうではありません。

+0

乾杯 - 回答を投稿するのではなく、別の質問を開いてください。しかし、今のところあなたに知らせるためには:501はサーバー側の障害を示しています。まず、サーバー側のログを見て、サーバー側で何が失敗しているのか、その理由を把握します。しかし、とにかく、エラー応答のために、多くのまたはほとんどのWebサーバーは、Access-Control-Allow-Originヘッダーを送信しません。代わりに、成功応答に対してのみ送信します。したがって、その501応答内のAccess-Control-Allow-Origin応答ヘッダーがないことは、サーバーのCORS設定エラーを示していません。本当の問題は501自体です。 – sideshowbarker

関連する問題