4
我開發了一個Chrome,它使用XMLHttpRequest將帶有用戶名/密碼的GET HTTP請求發送到basic-auth保護的URL,以便它可以「自動登錄「之後(因爲Chrome緩存HTTP basic-auth的憑證)。使用用戶名/密碼發送GET HTTP請求的XMLHttpRequest
這是我使用的代碼:
var xml = new XMLHttpRequest();
xml.open('GET',<url>,false,<username>,<password>)
xml.send('');
經過一些額外的研究,我發現它可能與Chrome瀏覽器19不支持用戶名:密碼@ URL語法用於驗證基本-auth的保護網址,因爲當我送了XMLHttpRequest,我看到這個谷歌瀏覽器的JS控制檯:
GET http://user:[email protected] 401(未授權)
有誰知道它是否是一個錯誤或Chrome是否停止支持這個功能嗎?
我的功能
function autoLogin(domain, user, password) {
var httpAuth;
if (window.XMLHttpRequest) {
httpAuth = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
}
else if (window.ActiveXObject) {
httpAuth = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
}
else {
alert("Seu browser não suporta autenticação xml. Favor autenticar no popup!");
}
var userName = domain + "\\" + user;
httpAuth.open("GET", "/_layouts/settings.aspx", false, userName, password);
httpAuth.onreadystatechange = function() {
if (httpAuth.status == 401) {
alert("Usuário e/ou senha inválidos.");
eraseCookie('AutoLoginCookieUserControl_User');
eraseCookie('AutoLoginCookieUserControl_Password');
}
else {
if ($(".pnlLogin").is(':visible')) {
$(".pnlLogin").hide();
$(".pnlUsuario").css("display", "block");
$(".avatar").css("display", "block");
var name = $().SPServices.SPGetCurrentUser({ fieldName: "Title" });
$(".loginNomeUsuario").html("Seja Bem Vindo(a) <br />" + name);
}
}
}
var userAgent = navigator.userAgent.toLowerCase();
$.browser.chrome = /chrome/.test(navigator.userAgent.toLowerCase());
if ($.browser.chrome == true) {
httpAuth.setRequestHeader("Authorization", "Basic " + btoa(userName + ":" + password));
}
try {
httpAuth.send();
}
catch (err) {
console.log(err);
}
}
不要在鉻工作.. –
爲什麼無法在Chrome中工作?我現在把德功能代碼,以查看 –
@RodrigoWaldow我使用了鉻,所以它的工作。如果您在Windows上使用域,則可能需要嘗試從您的用戶名中刪除該域。 – Kinlan