[javascript] En-tête 'Autorisation' d'origine croisée avec jquery.ajax ()


Answers

Question

J'essaie d'envoyer un domaine d'origine croisée et d'ajouter un en-tête 'Authorization' personnalisé. Veuillez consulter le code ci-dessous.

Erreur:

XMLHttpRequest ne peut pas charger {url}. Champ d'en-tête de demande L'autorisation n'est pas autorisée par Access-Control-Allow-Headers.

function loadJson(from, to) {
    $.ajax({
        //this is a 'cross-origin' domain
        url : "http://localhost:2180/api/index.php",
        dataType : 'json',
        data : { handler : "statistic", from : from, to : to
        },
        beforeSend : setHeader,
        success : function(data) {
            alert("success");
        },
        error : function(jqXHR, textStatus, errorThrown) {
            alert("error");
        }
    });
}

function getToken() {
    var cookie = Cookie.getCookie(cookieName);
    var auth = jQuery.parseJSON(cookie);
    var token = "Token " + auth.id + ":" + auth.key;
}

function setHeader(xhr) {
    xhr.setRequestHeader('Authorization', getToken());
}

J'ai aussi essayé:

headers : { 'Authorization' : getToken() },

dans la requête ajax.

Se pourrait-il que le framework jquery-ajax bloque l'Authentification d'origine croisée? Comment puis-je réparer cela?

Mettre à jour:

En passant: y a-t-il une méthode plus sûre pour stocker le auth.key sur le client puis dans un cookie? getToken () sera remplacé par une méthode plus complexe, hachage du corps, date, etc.




Related