Я настроил свой сервер Jetty на разрешение междоменных HTTP-запросов (allowedOrigins = *), а также на междоменную аутентификацию (allowCredentials=true) с использованием CrossOriginFilter. Междоменные http-запросы без требования аутентификации работают нормально. Теперь, когда дело доходит до HTTP-вызовов, требующих аутентификации, использование JQuery не работает. Я использую следующий код и следую этому примеру: http://www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/
function login(username, password) {
$.ajax({
type: "GET",
contentType: "application/json",
dataType: "json",
url: url,
beforeSend: function(xhr) {
var base64 = Base64.encode(username + ":" + password);
xhr.setRequestHeader("Authorization", "Basic " + base64);
xhr.withCredentials = true;
},
error: function(data){
alert("error");
},
success: function(data){
alert("success");
}
});
В HTTPFox я вижу следующий запрос к серверу :
OPTIONS /login HTTP/1.1
...
Access-Control-Request-Method GET
Access-Control-Request-Headers authorization,content-type
Сервер отвечает
HTTP/1.1 204 No Content
...
Allow OPTIONS,GET,HEAD
Я также использовал приведенные ниже параметры, которые не имеют значения.
$.ajax({
...
username: username,
password: password,
...
}
Функция ошибки срабатывает всегда. Кто-нибудь знает, в чем может быть проблема?