13

私はいくつかのブラウザ側の動的機能を作成し、HTTP基本認証を使用していくつかのリソースを保護しています。ユーザーエクスペリエンスは非常に重要であり、高度にカスタマイズされています。

これは、ユーザーがフォームで適切なクレデンシャルを提供したかどうかを最終的にテストする簡単なテストJQueryメソッドです。

$(document).ready(function() {
    $("#submit").click(function() {
    var token = Base64.encode($('#username').val() + ':' + $('#password').val());        
    $.ajax({
      url: '/private',
      method: 'GET',
      async: false,
      beforeSend: function(req) {
        req.setRequestHeader('Authorization', 'test:password');
      },
      error: function(request, textStatus, error) {
        if (request.status == 401) {
          alert('401');
        }
      }
    });
    return false;
  });
});

アクセスが許可されていない場合は/private、現時点ではアラートボックスのみが表示されます。ただし、Firefoxでは、ブラウザ提供のログインフォームがポップアップ表示されます(新しいクレデンシャルで再試行するため)。Safariはこれを行いません。

カスタムフォーム、フェード、トランジションなどのエクスペリエンスを完全に制御したいと考えています。Firefoxのデフォルトボックスが表示されないようにするにはどうすればよいですか?(IEをテストするときにこれが問題になる場合は、そこで解決策も聞いてみたいです。)

4

4 に答える 4

37

解決策は、WWW-Authenticateヘッダーを。以外のものに設定することですBasic。たとえば、次のように設定します。

WWW-Authenticate: None

また

WWW-Authenticate: FormBased

フォームベースのログインを使用する場合。その後、ブラウザはログインウィンドウを表示しません。

于 2013-09-30T19:27:16.640 に答える
4

まだ読んでいない場合:

ブラウザの認証ダイアログを抑制するにはどうすればよいですか?

あまり有望に見えません:)

于 2009-05-30T03:18:10.463 に答える
3

残念ながら、私はここで同じ問題にぶつかっています。

私の意見では、ブラウザはxmlhttprequestのプロンプトを表示するべきではありません。誰かがプッシュして、認証の必要性のためにjQueryに移行したいと思っている人がいることを本当に望んでいます。

これが私があなたに与えることができる助けです、私はこのjQueryダイジェストのものを見つけました、それが実際に何をするのか私にはわかりませんが、誰かがこのコードを正しい方法でとることができれば、jqueryダイジェスト認証システムを持つことができます。

https://www.openhub.net/p/digestj

この便利な新しいAuthDigestDomainオプションを使用すると、上記のスクリプトを書き直したり、保護された領域を「リンク」したりして、この問題を完全に乗り越えることができると思います。さて...幸運を祈ります=)

于 2009-07-25T01:41:45.930 に答える
1

この認証ポップアップの問題の回避策をどこかで見つけました。

WWW-Authenticate: None

私にはうまくいきませんが、私は追加しました

'Authorization': 'Basic'

ヘッダーにそしてそれは魅力のように働きます。

于 2019-07-16T20:41:09.203 に答える