Gemäß Anforderungen mit Anmeldeinformationen sendet Firefox nur Anmeldeinformationen zusammen mit domänenübergreifenden Beiträgen, wenn
invocation.withCredentials = "true";
ist gesetzt… Aber es scheint nicht, dass die Ajax-API von jQuery dafür einen Mechanismus bietet.
Gibt es etwas, was ich vermisst habe? Gibt es eine andere Möglichkeit, wie ich das machen kann?
Funktionalität soll in jQuery 1.5 unterbrochen werden.
Seit jQuery 1.5.1 sollten Sie xhrFields param verwenden.
$.ajaxSetup({
type: "POST",
data: {},
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true
});
Dokumente: http://api.jquery.com/jQuery.ajax/
Gemeldeter Fehler: http://bugs.jquery.com/ticket/8146
Mit dem beforeSend
callback können Sie zusätzliche Parameter einstellen (Das XMLHTTPRequest
-Objekt wird als einziger Parameter an es übergeben).
Nur um zu wissen, dass diese Art von domänenübergreifender Anforderung nicht in einem normalen Site-Szenario und nicht mit anderen Browsern funktioniert. Ich weiß nicht einmal, welche Sicherheitsbeschränkungen FF 3.5 auch auferlegt, nur damit Sie Ihren Kopf nicht umsonst gegen die Wand schlagen:
$.ajax({
url: 'http://bar.other',
data: { whatever:'cool' },
type: 'GET',
beforeSend: function(xhr){
xhr.withCredentials = true;
}
});
Eine weitere Sache, vor der man sich hüten muss, ist, dass jQuery so eingerichtet ist, dass Browserunterschiede normalisiert werden. Es kann sein, dass die jQuery-Bibliothek weitere Einschränkungen auferlegt, die diese Art von Funktionalität verbieten.
In jQuery 3 und möglicherweise früheren Versionen funktioniert die folgende einfachere Konfiguration auch für individuelle Anforderungen:
$.ajax(
'https://foo.bar.com,
{
dataType: 'json',
xhrFields: {
withCredentials: true
},
success: successFunc
}
);
Der vollständige Fehler, den ich in Firefox Dev Tools -> Registerkarte "Netzwerk" (auf der Registerkarte "Sicherheit" für eine individuelle Anforderung) erhielt, war
Bei der Verbindung zur foo.bar.com.SSL-Gegenstelle trat ein Fehler auf Es ist nicht möglich, einen akzeptablen Satz von Sicherheitsparametern auszuhandeln. Fehler code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT