wake-up-neo.com

Senden von Anmeldeinformationen mit domänenübergreifenden Beiträgen?

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?

71
David Wolever

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

145
Kangur

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.

39
Doug Neiner

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

0
chim