2016-02-22 6 views
7

Cordovaとfetch APIを併用すると問題が発生します。 Iは、次のコードFetch APIと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')) 
}); 

コードがブラウザで実行されると「X-持つAuthToken」ヘッダが正しく検索され、記録され実行しています。私が同じコードをCordovaアプリケーションにパッケージ化して実行すると、 'X-AuthToken'ヘッダーがnullになります。 さらに、奇妙なのは、レスポンスサーバー側をチェックするときに、ヘッダーセットを完全に見ることができ、ネットワーク上でスニッフィングするときに、ヘッダーがあることを完全に確認できることです(フェッチAPIによって返されません)。実際にはヘッダが正しく設定されている同等のXMLHttpRqeuestを使用している場合:

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

それは私が、プラグマ、キャッシュ制御のような他の一般的なヘッダをダンプしようとすると、...彼らが正しく記録されていることをシグナリングの価値があります。 フェッチAPIのような継ぎ目は、ヘッダをフィルタリングし、標準ではないものを削除することです。 他の誰かが同じ問題を抱えていますか?何か不足していますか?

+1

を参照してください。フェッチapiはモバイルブラウザではうまくサポートされていません。 http://caniuse.com/#feat=fetch – albanx

+1

@pinturicアンドロイドとios cordovaプロジェクトは両方ともWebkitを使用しています。 Fetch APIはまだWebkitでは100%サポートされていません。下の私の答えを見てください –

答えて

1

すてきな質問をすると、あなたは最先端に発展しています。私は今XMLHTTPRequestに固執します。フェッチapiはwebkitに正しく実装されていません。 webkit bugzilla bug 151937

関連する問題