带有Authorization标头的JavaScript重定向URL
JavaScript redirect URL with Authorization header
我成功地调用了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';
}
});
我最初的假设是,一旦web会话成功授权了请求,就可以在"成功"块中进行重定向,而无需询问用户凭据。当调用此代码块时,用户已经在非保护环境中输入了用户名和密码。但是,当调用重定向时,浏览器将弹出登录/密码窗口。
关于如何使用用户提供的基本授权预授权会话,有什么建议吗?
使用AJAX请求进行日志记录通常有效,因为成功的AJAX请求会设置会话cookie,这些cookie将在所有后续请求中透明发送。
也许你的cookie已经设置好了,但由于某些原因没有透明设置:你可以使用xhr.getAllResponseHeaders()/xhr.getResponseHeader()进行检查,然后使用document.cookie.进行设置
如果没有会话cookie,则此行为通常会失败。
您可以尝试在url中使用用户名+密码重定向(不建议使用,因为用户名+密码可能会在之后的浏览器地址url栏中显示):
window.location.href =
window.location.protocol + "//" +
username + ":" + password + "@" +
window.location.hostname +
(window.location.port ? ":" + window.location.port : "") +
'/app/test.html';
此外,您应该测试以延迟重定向。。。因为也许它可以工作,但你需要给浏览器一些额外的时间,你试过了吗:
var encoded = Base64.encode(username + ':' + password);
$.ajax({
url: "/app/test",
type: "GET",
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + encoded);
},
success: function() {
setTimeout(function() {
window.location.href = '/app/test.html';
}, 333);
}
});
相关文章:
- 通过javascript重定向html传递php变量
- 使用CSS和Javascript重定向-手持设备
- Javascript重定向循环直到成功
- 如何在通过Javascript重定向时保持StatefulSnippet var值
- JavaScript重定向功能
- Chrome:刷新页面后未呈现的背景图像 + JavaScript 重定向
- 从帖子返回后,Javascript重定向不起作用
- 如果 URL 包含使用 JavaScript 重定向的特定端口
- 由 URL 触发的来自 iFrame 的 JavaScript 重定向
- 模拟隐藏表单提交&使用JavaScript重定向以实现安全支付
- 使用Javascript重定向并设置请求属性
- 谷歌分析调用然后用javascript重定向
- 使用Javascript重定向所有推荐链接
- 在没有flash的情况下使用javascript重定向
- 是否可以在node.js中遵循Javascript重定向
- 带有SetTimout的Javascript重定向不工作
- Rgd:Javascript重定向顶部父页
- JavaScript重定向何时真正生效
- 模态中的JavaScript重定向
- 如何阻止javascript重定向页面