Междоменная аутентификация jquery

Я настроил свой сервер 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,
    ...
}

Функция ошибки срабатывает всегда. Кто-нибудь знает, в чем может быть проблема?

8
задан hansi 26 May 2012 в 21:08
поделиться