我使用jquery。
当用户登录时,我希望在标题中有授权信息。
似乎在我们进行重定向时,在我们进行ajax调用后,标题不再存在
任何原因?
我的代码
$('#loginform').submit(function(event) {
event.preventDefault();
var header = btoa($('#username').val() + ":" + $('#password').val());
$.ajaxSetup({
headers: {
"Authorization": "Basic " + header
}
});
$.ajax({
timeout: 1000, //check if really needed
type: 'get',
url: '/rest/members/1',
headers: {
"Authorization": "Basic " + header
}
}).done(function(data, textStatus, jqXHR) {
$("#error-login-form").addClass("hidden");
var deferredUsername = getNameByUsername();
$.when(deferredUsername).then(function() {
window.location = "main.html";
});
}).fail(function(jqXHR, textStatus) {
if (jqXHR.status == 401) {
$("#error-login-form").removeClass("hidden");
}
});
});
答案 0 :(得分:0)
使用jQuery,您可以在beforeSend中使用它。像
这样的东西 beforeSend: function (xhr) {
var authorizationCode = $.base64('encode', 'userName' + ":" + 'password');
xhr.setRequestHeader ("Authorization", "Basic " +authorizationCode);
xhr.setRequestHeader ("Content-Type", "application/json;charset=utf-8");
}
根据beforeSend的jQuery文档
一个预请求回调函数,可用于在发送之前修改jqXHR(在jQuery 1.4.x,XMLHTTPRequest)对象中。使用它来设置自定义标题等.jqXHR和设置对象作为参数传递。这是一个Ajax事件。在beforeSend函数中返回false将取消请求。从jQuery 1.5开始,无论请求的类型如何,都将调用beforeSend选项。
答案 1 :(得分:0)
试
var header = btoa($('#username').val() + ":" + $('#password').val());
$.cookie('cookie_authorization', header);
并为你所有的ajax调用,添加
headers: {
"Authorization": "Basic " + $.cookie('cookie_authorization')
}