web-dev-qa-db-fra.com

JQuery $ .post cross-domaine et informations d'identification

J'ai écrit une application Web qui utilise beaucoup de $.post appels avec JQuery. Maintenant, je voudrais envoyer withCredentials: true avec lui pour maintenir une session en vie, à quoi cela ressemble dans $.ajax (et fonctionne également comme ceci):

$.ajax({
            type: 'post',
            url: 'http://example.com/server/api.php',
            crossDomain: true,
            dataType: "json",
            xhrFields: {
                withCredentials: true
            },
            data: {
                username : 'test',
                password : 'test'
            },
            success: function (d) {
                $('body').html(d.status);
            }
        });

C'est parce que je voudrais maintenant télécharger les fichiers PHP sur mon serveur et exporter le côté client à l'aide de Cordova. (withCredentials: true est uniquement inclus en raison de tests sur mon serveur localhost) Puis-je emballer cela dans le $.post appeler ou dois-je remplacer tous les appels? (J'écrirais une nouvelle fonction qui ressemblerait à $ .post)

12
Deproblemify

Vous pouvez utiliser jQuery.ajaxSetup () pour définir les options par défaut que chaque demande ajax utilisera (y compris $.post et $.get)

$.ajaxSetup({
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    },
    username: 'test',
    password: 'test'
});

$.post('http://example.com/server/api.php', {
    username: 'test',
    password: 'test'
}, function (d) {
    $('body').html(d.status);
}, 'json');

Aussi l'avertissement concernant cette API

Remarque: Les paramètres spécifiés ici affecteront tous les appels à $ .ajax ou aux dérivés basés sur Ajax tels que $ .get (). Cela peut provoquer un comportement indésirable car d'autres appelants (par exemple, des plugins) peuvent s'attendre aux paramètres par défaut normaux. Pour cette raison, nous vous déconseillons fortement d'utiliser cette API. Au lieu de cela, définissez les options explicitement dans l'appel ou définissez un plugin simple pour le faire.

à partir de la documentation jQuery

18
Spokey