如何防止弹出基本身份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挑战。