2

我有一个 Java 应用程序,JSF 使用 javascript 连接到需要基本身份验证的网站。

我想要做的事情与我在弹出表单中输入用户名和密码时发生的事情完全相同。

我已经尝试了许多我在该主题上看到的不同方法,但它们都不起作用。奇怪的是,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 标头以防止浏览器弹出标准基本挑战。例如,如果您的标题是:

WWW-Authenticate: Basic realm="realm here"

然后浏览器会弹出挑战。但如果你的标题是:

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

那么浏览器就不会弹出401挑战了。

于 2013-01-28T19:38:25.760 回答
2

您可以采用以下格式在 URL 中对基本身份验证凭据进行编码:

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

所以以同样的方式调整你的 ajax url。

于 2013-01-28T17:54:13.467 回答