Nodeが約400Kのjsonを返すnative mongo rest apiを使用してアプリケーションをプロトタイプしています。何console.log
からのノードのコンソールに出力され、どのような受信され、両方(私はカール経由http://localhost:8001/api/testdata
を打つときNodeJS/ExpressJSが大量のデータを1ストリームで送信する
http.request(options, function(req)
{
req.on('data', function(data)
{
console.log(data,data.rows);
response.send(200, data);
}
);
}
)
.on('error', function(error)
{
console.log('error\t',error);
response.send(500, error);
}
)
.end();
は、応答が適切である:私はのネイティブAPIをモンゴし、結果を返すために、彼の要求をmaketするために、次を使用しますカールによって)。しかし、私のアプリでajax経由でヒットすると、ストリームは... interuptedされ、ノードのコンソール(端末)に出力されたdata
も奇妙です:複数のEOFがあり、chromeのdevツールの呼び出しのNetwork> EOF。
もう一つの奇妙なこと:data
は次のようになります。
{
"offset": 0,
"rows": [ … ]
}
どちらもノードでも、クライアント側(角度)で、私は(それはundefinedを返します)data.rowsを参照することができます。 typeof data
は[object Object]
を返します。 (ノードによって報告されるように)
EDITカール及び角度の両方について要求ヘッダーは、次のとおり
req.headers: {
'x-action': '',
'x-ns': 'test.headends',
'content-type': 'text/plain;charset=utf-8',
connection: 'close',
'content-length': '419585'
}
EDIT Iは、(代わりにノードからの)直接角度とカールの両方に応答ヘッダーをチェックし、 annndが不一致(カール及び角度の両方から直接代わりのノードから同じ出力)は次のとおり
access-control-allow-headers: "Origin, X-Requested-With, Content-Type, Accept"
access-control-allow-methods: "OPTIONS,GET,POST,PUT,DELETE"
access-control-allow-origin: "*"
connection: "keep-alive"
content-length: "65401" // <---------------- too small!
content-type: "application/octet-stream"
// ^-- if i force "application/json"
// with response.json() instead of response.send() in Node,
// the client displays octets (and it takes 8s instead of 0s)
date: "Mon, 15 Jul 2013 18:36:50 GMT"
etag: ""-207110537""
x-powered-by: "Express"
私はヘッダーを読んで、Nodeで本文を要求し、両方のケースで何が通過しているかをトレース/プリントアウトしようとします。それはリクエスト情報やリクエストがどのように発生しているのかを理解してから、カールリクエストとajaxリクエストの違いを解決するための具体的な答えを探します(角度などのヘッダーを設定します) – shaunhusain
@ shaunhusain、私はヘッダーをチェックして、それらは同じですので、私はまた 'req'オブジェクト(FileMergeで)全体をチェックし、それは_0のdifference_ – jacob
を返すうわーです:)申し訳ありません私はあなたに伝えるべきか分からないマシンに送信されたデータがまったく同じで、2つの異なる方法で応答する場合、何が起こっているのか分かりません。おそらく、私たちはノードの神や角度のある神(おそらく、いくつかの低レベルのOSIの神)を怒らせたので、私たちは悔い改めなければなりません。どのようにデータをキャプチャしていますか?私は過去にたくさんの成功を収めたチャールズを使いました(これはどういうことですか?) – shaunhusain