jquery cross domain authentication

Ich konfiguriert mein Jetty-server zu ermöglichen cross-domain-http-Anfragen (allowedOrigins = *) und auch, um einen cross-domain authentication (allowCredentials=true) mit seiner CrossOriginFilter.
Cross-domain-http-Anfragen ohne Authentifizierung Anforderung arbeiten ok. Nun, wenn es um die http-Aufrufe, die eine Authentifizierung erfordern Es funktioniert nicht mit JQuery. Ich verwende den folgenden code und diesem Beispiel gefolgt: 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"); 
    }
});

Im HTTPFox sehe ich folgende Anfrage an den server:

OPTIONS /login HTTP/1.1
...
Access-Control-Request-Method   GET
Access-Control-Request-Headers  authorization,content-type

Antwortet der server mit einem

HTTP/1.1 204 No Content
...
Allow   OPTIONS,GET,HEAD

Ich auch die folgenden Optionen, die nicht machen einen Unterschied.

$.ajax({
    ...
    username: username,
    password: password,
    ...
}

Die error-Funktion immer feuert.
Jemand eine Idee was das problem sein könnte?

  • Sehen Sie diese in Ihre Antwort-header Access-Control-Allow-Origin:*? Gute Frage übrigens! Herzlich willkommen auf StackOverflow!
  • Ich denke, es wäre hilfreich, wenn man zeigen könnte, jede stacktraces im Zusammenhang mit dem Thema als gut.
  • ok, bitte überprüfen, um zu sehen, ob das header enthalten ist, in Ihre Antwort. Wenn nicht, dann ist es möglich, die Sicherheit überschreiben, die Antwort-Header. Mehr sehen müssen logs zum Debuggen weiter. Viel Glück! 🙂
  • Nein, ich dont sehen, wie diese header in der Antwort vom server. Die Sicherheit der jetty? Welche Art von Protokollen oder stacktraces kann ich bieten?
  • Dies würde bei der Rahmen-oder server-Ebene. Die server in der Regel meldet sich die Dinge auf einem sehr viel niedrigeren Niveau als Ihre app macht, so müssten Sie ändern, Protokollierung.Eigenschaften (oder was auch immer-logger, die Sie verwenden), und legen Sie es zu Protokoll zu DEBUGGEN, oder ALLE, so Sie sehen können, was die server-und framework sind dabei unter der Haube. Sie sind auf der Suche für jede Instanz der Header gesetzt wird, ohne die Access-origin-header
InformationsquelleAutor hansi | 2012-05-26
Schreibe einen Kommentar