2016-02-22 13 views
7

Ich habe Probleme bei der Verwendung zusammen Cordova und Fetch API. Ich Ausführung den folgenden CodeFetch API und 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')) 
}); 

Wenn der Code im Browser der ‚X-authToken‘ Header korrekt abgerufen und protokolliert ausgeführt wird. Wenn ich denselben Code ausführe, wenn er in meiner Cordova-App gepackt wird, ist der X-AuthToken-Header null. Darüber hinaus ist es seltsam, dass ich den Header-Satz perfekt sehen kann, wenn ich die Antwort-Server-Seite überprüfe und im Netzwerk schnüffle, so dass ich absolut sicher bin, dass der Header da ist (einfach wird nicht von der Fetch-API zurückgegeben); in der Tat bei der Verwendung des äquivalenten XMLHttpRqeuest der Header richtig eingestellt ist:

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')); 
    } 
} 

Es lohnt sich, signalisiert, dass, wenn ich andere gemeinsame Header wie Pragma Dump versuchen, Cache-Control, ... sie korrekt angemeldet sind. Es scheint, als ob die Fetch-API die Header filtert und diejenigen entfernt, die nicht Standard sind. Hat jemand das gleiche Problem? Fehle ich etwas?

+1

Die Fetch Api hat keine gute Unterstützung für mobile Browser. http://caniuse.com/#feat=fetch – albanx

+1

@pinturic android und ios cordova projekte verwenden beide webkit. Die Fetch-API wird im Webkit noch nicht zu 100% unterstützt. Siehe meine Antwort unten –

Antwort

1

Nett gestellte Frage, Sie entwickeln auf der Schneide. Ich würde für jetzt XMLHTTPRequest beibehalten. Fetch api ist im Webkit nicht korrekt implementiert. Siehe webkit bugzilla bug 151937

Verwandte Themen