2015-12-01 25 views
5

Ho un'API guidata con i token di Laravel, Dingo e JWT. Testare la chiamata API con PAW funziona perfettamente. Esecuzione delle chiamate API con jQuery senza middleware I token JWT funzionano correttamente. Ma non appena provo a eseguire una richiesta Ajax con i token JWT Im ottenendo un 401.Token JWT con jQuery Ajax

Mi manca un trucco con la richiesta Ajax. Riesci a vedere un problema con questo codice?

$.ajax({ 
    url: "http://api.domain.app/products", 
    dataType : 'jsonp', 
    type: 'GET', 
    beforeSend : function(xhr) { 
     xhr.setRequestHeader("Accept", "application/json"); 
     xhr.setRequestHeader("Content-Type", "application/json"); 
     xhr.setRequestHeader("Authorization", "Bearer XXXX"); 
    }, 
    error : function() { 
     // error handler 
    }, 
    success: function(data) { 
     console.log(data); 
     return data; 
    } 
}); 

Devo usare jsonp a causa di Cross Domain. Ma di nuovo questo sta funzionando benissimo dal middleware JWT.

spera che possiate consigliare ..

risposta

1

ho rimosso l'API dal sottodominio e il suo funzionamento benissimo. Deve avere qualcosa a che fare con i token JSONP e JWT.

+0

Il tuo codice è giusto. Probabilmente hai avuto un problema con le richieste CORS. –

+0

Stai memorizzando jwt nella memoria locale/di sessione della finestra? Perché non funziona per i sottodomini. – Volt

1

Il codice di stato HTTP 401 è per "Non autorizzato", il che significa che l'autenticazione è richiesta e non è riuscita o non è stata ancora fornita correttamente. In questo caso, è perché non è stato fornito correttamente. Stai cercando di fornirlo nel parametro beforeSend. beforeSend ti offre la possibilità di manipolare lo XMLHttpRequest prima che venga inviato, ma il problema è che stai usando JSONP. E JSONP dal momento che JSONP è solo un trucco di inserimento tag <script>, non utilizza XMLHttpRequest, quindi la sua manipolazione è inutile.

Here è una buona spiegazione su esattamente cosa sia JSONP.

La tua domanda era: "Riesci a vedere un problema con questo codice?", A cui ho risposto sopra. Quello che probabilmente vorrai chiedere è "Come faccio ad avere il problema di autorizzazione per lavorare con jQuery?". Si dice "Devo usare jsonp a causa di Cross Domain" e se si elabora un po 'di più su "a causa di Cross Domain", una risposta che porta a una soluzione sarà più facile da produrre. The answer in this issue potrebbe risolvere i tuoi problemi, ma è difficile dirlo senza ulteriori informazioni.