HP Almに対して認証したいのですが、ブラウザでコードを実行すると、手動でログインするようにポップアップが表示されます。良い。HP ALM 12:53 - 認証のためのログインフォームの回避
しかし、どうしたらいいですか?私はそれがブラウザのログインフォームなしで認証されることを望みます。何か案は?ありがとうございました!
敬具、 ダニエル
import utf8 from 'utf8';
import base64 from 'base-64';
class AlmApi {
static getAllDefectsFromAlm() {
performSignIn();
headers.append('Accept', 'application/json');
return fetch(request, {
method: 'GET',
mode: 'no-cors',
credentials: 'include',
headers: headers
})
.then(response => response.json())
.catch(error => console.log('Getting data failed: ' + error.message));
}
}
let alm_host = '<URL><PORT>/qcbin';
let sign_in = alm_host + '/api/authentication/sign-in';
let sign_out = alm_host + '/api/authentication/sign-out';
let request = alm_host + '/rest/domains/<DOMAIN>/projects/<PROJECT>?<QUERY>';
let username = 'USERNAME';
let password = 'PASSWORD';
let login_credentials = username + ':' + password;
let bytes = utf8.encode(login_credentials);
let headers = new Headers();
function performSignIn() {
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
headers.append('Authorization', 'Basic' + base64.encode(bytes));
fetch(sign_in, {
credentials: 'include',
method: 'POST',
headers: headers,
mode: 'no-cors'
})
.then(response => response.json())
.catch(error => console.log('Authorization failed : ' + error.message));
}
function performSignOut() {
headers.append('Accept', 'application/json');
fetch(sign_in, {
method: 'POST',
headers: headers
})
.catch(error => console.log('Logout failed: ' + error.message));
}
export default AlmApi;
'getAllDefectsFromAlm'で' GET'リクエストと 'mode: 'no-cors''を使用すると、ブラウザはあなたのコードをレスポンスへのアクセスからブロックします。したがって、あなたの '.then(response => response.json())'はうまくいきません。 'performSignIn'のあなたの' POST'リクエストと同じです。 '.then(response => response.json())'もそこで失敗します。 'POST'リクエスト自体は成功しますが、あなたのブラウザはあなたのコードがレスポンスにアクセスすることを許可しません。 – sideshowbarker
実際には、 'performSignIn'' POST'リクエストに 'mode: 'no-cors''を設定することによるもう1つの効果は、あなたのブラウザがCORS-safelistリクエストヘッダーではないリクエストヘッダーをリクエストに追加させないことですhttps://fetch.spec.whatwg.org/#cors-safelisted-request-header。 POSTリクエストはあなたが追加しようとしている 'Authorization'リクエストヘッダなしで、またあなたが追加しようとしている' Content-Type:application/json'なしで送られます。ですから、私は、 'POST'リクエストが承認に失敗し、承認を必要としなくても正しいコンテンツタイプで送信されないと思います。 – sideshowbarker
さて、ノーコアのコメントは501でコメントしましたが、私はもうポップアップを得ません... –