2016-07-10 6 views
4

fetch機能を使用して、クライアントサイドのJavascriptコードでサーバーからデータを取得しようとしています。そして、私はフェッチのpolyfillバージョンwhatwg-fetchをChromeで使用しています(内部でフェッチをサポートしています)。私はCORSのオプションを設定する必要がありましたので、あなたが自分のアプリケーション・サーバは、私のリソースサーバと同じではありません見ることができるように要求が成功したにもかかわらずfetchの応答が空です

//Called in a page loaded as http://localhost:3236/ 
fetch("http://localhost:8080/list", { 
     mode: 'no-cors', 
     credentials: "include", 
    }) 
    .then(function(response) { 
     return response.json(); 
    }); 

:ここ

は、私は関数を呼び出す方法です。それは私がパネルのネットワークと送信された要求を見つけるために、電源を入れたとき、それはすべての200のステータスと要求されたデータとOKらしいた場合にだ

{ 
    body: null, 
    bodyUsed: false, 
    headers: Headers, 
    ok: false, 
    status: 0, 
    statusText: "", 
    type: "opaque", 
    url: "", 
} 

:問題はresponseは何のコンテンツを持っていないことです。

問題の原因を確認するにはどうすればよいですか?

+0

期待される結果が例えば 'application/json'だった場合、Chromeは空の応答データを表示できますが、何らかの理由で(つまり無効な書式設定で)HTTP応答本体を解析できないことに注意してください。このような場合、私は一般的にFiddlerを開き、生の応答をチェックします。 – brendonofficial

+0

Chromeの生応答パネル数はカウントされていませんか?私はそこに私の希望の応答を見ることができます。私はJSでそれを受け取ることができません! – Mehran

答えて

5

ヒントはopaqueキーにあります。リクエストは成功しましたが、ChromeのCORSの制限により、返されたデータの使用が妨げられています。 no-corsオプションは疑わしいです。サーバーがクロスオリジン要求に対して正しく構成されている必要はありません。

N.B.正しく設定してもクライアントをローカルでテストしているときにエラーが発生している場合は、--disable-web-securityフラグを付けてChromeを起動すれば十分です。

+0

1つの質問; 'no-cors'とサーバの設定は互換性がありませんか?私はどこでもこれを読んだことはありませんが、もしそうでなければ、ノーコアの意味は何ですか? – Mehran

+1

@Mehran、「ノーコア」の意図されたユースケースについては完全にはっきりしていません。ここの文書では、JavaScriptがレスポンスペイロードを検査できないことが明示されています。https://developer.mozilla.org/ ja-JP/docs/Web/API /リクエスト/モード – linguamachina

関連する問題