如何防止弹出基本身份validation表单

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

我想要帮助的事情与我在popupform中输入用户名和密码时完全相同。

我在这个主题上尝试了许多不同的方法,但没有一种方法可行。 奇怪的是,ajax调用返回了一个respone,但无论如何我得到了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'); } }); 

您可以使用以下格式对URL中的basic-auth凭证进行编码:

https://开头的用户名:password@www.example.com/abc

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

如果您可以控制服务器端代码,则可以滚动自己的Authenticate标头以防止浏览器弹出标准的Basic Challenge。 例如,如果您的标题是:

 WWW-Authenticate: Basic realm="realm here" 

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

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

然后浏览器不会弹出401挑战。