Ich konfiguriere meinen Jetty-Server, um domainübergreifende http-Anfragen (allowedOrigins = *) zuzulassen und auch Cross-Domain-Authentifizierung (allowCredentials = true) mit seinem CrossOriginFilter zu erlauben. Cross-Domain-HTTP-Anfragen ohne Authentifizierung Anforderung funktionieren ok. Wenn es um HTTP-Aufrufe geht, die eine Authentifizierung erfordern, funktioniert das mit JQuery nicht. Ich verwende den folgenden Code und folgten diesem Beispiel: http://www.aswinanand.com/2009/01/http-basic-authentication-using-ajax/jquery cross domain authentication
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");
}
});
In HttpFox ich sehe die folgende Anfrage an den Server:
OPTIONS /login HTTP/1.1
...
Access-Control-Request-Method GET
Access-Control-Request-Headers authorization,content-type
Der Server wird mit einem I
HTTP/1.1 204 No Content
...
Allow OPTIONS,GET,HEAD
reagiert auch nutzte die folgenden Optionen, was keinen Unterschied macht.
$.ajax({
...
username: username,
password: password,
...
}
Die Fehlerfunktion wird immer ausgelöst. Jemand eine Idee, was das Problem sein könnte?
Sie diesen Header in Ihrer Antwort finden Sie unter 'Access-Control -Allow-Origin: * '? Große Frage übrigens! Willkommen bei StackOverflow! – jmort253
Ich denke, es wäre hilfreich, wenn Sie irgendwelche Stacktraces für das Problem anzeigen könnten. – jmort253
ok, überprüfen Sie bitte, ob dieser Header in Ihrer Antwort enthalten ist.Wenn nicht, ist es möglich, dass die Sicherheit die Antwortheader überschreibt. Sie müssen mehr Protokolle sehen, um weiter zu debuggen. Viel Glück! :) – jmort253