【发布时间】:2015-04-19 18:50:50
【问题描述】:
我成功地调用了 Apache 中受基本身份验证(htpasswd 等)保护的目录后面的 URL。 Ajax GET 请求正常工作并返回受保护的内容:
var encoded = Base64.encode(username + ':' + password);
$.ajax({
url: "/app/test",
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + encoded);
},
success: function() {
window.location.href = '/app/test.html';
}
});
我最初的假设是,一旦网络会话成功授权了请求,就可以在“成功”块中进行重定向,而无需询问用户凭据。调用此代码块时,用户已在未受保护的环境中输入用户名和密码。但是,当调用重定向时,浏览器会弹出登录/密码窗口。
关于如何使用用户提供的基本授权对会话进行预授权有什么建议?
【问题讨论】:
-
如果您使用 AJAX 的
headers设置而不是beforeSend进行身份验证,它是否有效?例如:headers: { "Authorization": "Basic " + encoded } -
已经有一段时间了,我相信我测试过的结果是一样的。
-
在 AJAX 的情况下,Authorization Header works 似乎就是这样。 Cookie 会随请求自动发送,您可以在服务器上读取它以检查授权(需要牢记 XSS、CSRF)。您想使用基本身份验证的任何具体原因?
标签: javascript jquery apache basic-authentication