2

基本認証が必要なWebサイトに接続するためにjavascriptを使用するJava、JSFのアプリケーションがあります。

私が協力したいのは、ポップアップフォームにユーザー名とパスワードを入力したときに起こることとまったく同じです。

このトピックで見たさまざまな方法を試しましたが、どれも機能しません。奇妙なことに、ajax 呼び出しは応答を返しますが、とにかく Windows セキュリティ ポップアップが表示されます。何らかの方法でキャッシュする必要がありますか? たとえば、以下の両方のコードは機能しません。以下はbase64を使用しています

$.ajax(
                {
                  'password' : password,
                  'username' : username,
                  'url'      : url,
                  'type'     : 'GET',
                  'success'  : function(){ alert("success");  },
                  'error'    : function(err){ alert('Bad Login Details' + err);},
                }
              );

$.ajax({
            url : url,
            method : 'GET',
            beforeSend : function(req) {
                req.setRequestHeader('Authorization', auth);
            },
            error : function(xhr, ajaxOptions, thrownError) {

                alert('Invalid username or password. Please try again. thrownError:' + thrownError + 'xhr:' + xhr + 'ajaxOptions:'+ajaxOptions);

            },
            sucess: function(result) {
                alert('done');
            }
        });
4

2 に答える 2

2

サーバー側のコードを制御できる場合は、独自の Authenticate ヘッダーをロールして、ブラウザーが標準の Basic Challenge をポップアップしないようにすることができます。たとえば、ヘッダーが次の場合:

WWW-Authenticate: Basic realm="realm here"

次に、ブラウザにチャレンジがポップアップ表示されます。ただし、ヘッダーが次の場合:

WWW-Authenticate: my-basic realm="insert realm"

その後、ブラウザは 401 チャレンジをポップアップ表示しません。

于 2013-01-28T19:38:25.760 に答える
2

次の形式で URL に basic-auth クレデンシャルをエンコードできます。

https://username:password@www.example.com/abc

したがって、同じ方法で ajax URL を調整します。

于 2013-01-28T17:54:13.467 に答える