Selon Demandes avec informations d'identification , Firefox n'enverra que les informations d'identification avec les publications inter-domaines si
invocation.withCredentials = "true";
est défini… Mais il ne semble pas que l'API Ajax de jQuery fournisse un mécanisme pour cela.
Y a-t-il quelque chose que j'ai raté? Y a-t-il un autre moyen de le faire?
La fonctionnalité est supposée être interrompue dans jQuery 1.5.
Depuis jQuery 1.5.1, vous devez utiliser le paramètre xhrFields.
$.ajaxSetup({
type: "POST",
data: {},
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true
});
Docs: http://api.jquery.com/jQuery.ajax/
Bogue signalé: http://bugs.jquery.com/ticket/8146
Vous pouvez utiliser le beforeSend
callback pour définir des paramètres supplémentaires (l'objet XMLHTTPRequest
lui est transmis comme paramètre unique).
Juste pour que vous sachiez, ce type de requête interdomaine ne fonctionnera pas dans un scénario de site normal et avec aucun autre navigateur. Je ne sais même pas quelles sont les limites de sécurité imposées par FF 3.5, afin que vous ne vous cogniez pas la tête contre le mur pour rien:
$.ajax({
url: 'http://bar.other',
data: { whatever:'cool' },
type: 'GET',
beforeSend: function(xhr){
xhr.withCredentials = true;
}
});
Une dernière chose à prendre en compte est que jQuery est configuré pour normaliser les différences entre les navigateurs. Vous constaterez peut-être que la bibliothèque jQuery impose d'autres limitations qui interdisent ce type de fonctionnalité.
Dans jQuery 3 et peut-être dans des versions antérieures, la configuration plus simple suivante fonctionne également pour des requêtes individuelles:
$.ajax(
'https://foo.bar.com,
{
dataType: 'json',
xhrFields: {
withCredentials: true
},
success: successFunc
}
);
L'erreur complète que je rencontrais dans Firefox Dev Tools -> onglet Réseau (dans l'onglet Sécurité pour une requête individuelle) était:
Une erreur s'est produite lors d'une connexion à l'homologue foo.bar.com.SSL: impossible de négocier un ensemble acceptable de paramètres de sécurité.Error code: SSL_ERROR_HANDSHAKE_FAILURE_ALERT