86 votes

jQuery: envoyer des informations d'authentification inter-domaine des postes?

Selon les Demandes avec des informations d'identification, Firefox ne envoyer des informations d'identification avec la croix-domaine posts si

invocation.withCredentials = "true";

est réglé... Mais il ne semble pas comme jQuery Ajax API fournit un mécanisme pour cette.

Il y a une chose que j'ai manqué? Est-il un autre moyen que je peux faire?

180voto

Kangur Points 2412

La fonctionnalité est censé être cassé en jQuery 1.5.

Depuis jQuery 1.5.1 vous devez utiliser xhrFields param.

$.ajaxSetup({
    type: "POST",
    data: {},
    dataType: 'json',
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true
});

Docs: http://api.jquery.com/jQuery.ajax/

Bug rapporté: http://bugs.jquery.com/ticket/8146

41voto

Doug Neiner Points 34940

Vous pouvez utiliser l' beforeSend de rappel pour définir d'autres paramètres ( XMLHTTPRequest objet est passé comme seul paramètre).

Si vous le savez, ce genre de contre-demande de domaine ne fonctionne pas dans un site normal scénario et pas avec n'importe quel autre navigateur. Je ne sais même pas de quoi limites de sécurité FF 3.5 impose ainsi, de sorte que vous n'avez pas battre votre tête contre le mur pour rien:

$.ajax({
    url: 'http://bar.other',
    data: { whatever:'cool' },
    type: 'GET',
    beforeSend: function(xhr){
       xhr.withCredentials = true;
    });

Une chose de plus pour se méfier de la, est que jQuery est le programme d'installation pour normaliser les différences de navigateurs. Vous pouvez constater que d'autres restrictions imposées par la bibliothèque jQuery qui interdisent ce type de fonctionnalité.

0voto

madneon Points 11

N'oubliez pas

Header set Access-Control-Allow-Credentials true

dans votre configuration d'Apache.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X