2016-02-22 14 views
7

Si verificano problemi durante l'utilizzo di Cordova e API di recupero. sto eseguendo il seguente codiceFetch API e Cordova

fetch(BASE_URL + '/auth/login', { 
    method: 'post', 
    credentials: 'include', 
    headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/x-www-form-urlencoded' 
    }, 
    body: transformRequest({username: email, password: password}) 
}).then(response => { 
     console.log(response.headers.get('X-AuthToken')) 
}); 

Quando il codice viene eseguito nel browser intestazione 'X-authtoken' sia correttamente recuperato e registrata. Quando eseguo lo stesso codice quando è inserito nella mia app Cordova, l'intestazione 'X-AuthToken' è nullo. Inoltre, ciò che è strano è che posso vedere perfettamente l'intestazione impostata quando si controlla il lato server di risposta e quando si annusa sulla rete così sono completamente sicuro che l'intestazione sia lì (semplicemente non viene restituita dall'API di recupero); infatti quando si utilizza il XMLHttpRqeuest equivalente l'intestazione è impostato correttamente:

var xhttp = new XMLHttpRequest(); 
xhttp.open("POST", BASE_URL + /api/auth/login", true); 
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xhttp.send("username=username&password=password"); 
xhttp.onreadystatechange = function() { 
    if (xhttp.readyState == 4 && xhttp.status == 200) { 
     console.log (xhttp.getResponseHeader('X-AuthToken')); 
    } 
} 

Vale la pena di segnalare che quando provo a scaricare altre intestazioni comuni come pragma, Cache-Control, ... che siano correttamente registrati. Sembra che l'API di recupero stia filtrando le intestazioni e rimuovendo quelle che non sono standard. Qualcun altro ha riscontrato lo stesso problema? Mi sto perdendo qualcosa?

+1

il fetch api non ha un buon supporto sui browser mobili. http://caniuse.com/#feat=fetch – albanx

+1

I progetti @pinturic per android e ios cordova utilizzano entrambi webkit. L'API di recupero non è ancora supportata al 100% nel webkit. vedi la mia risposta qui sotto –

risposta

1

Bella domanda, si sta sviluppando all'avanguardia. Vorrei attenermi a XMLHTTPRequest per ora. Fetch api non è correttamente implementato nel webkit. Vedi webkit bugzilla bug 151937