2

助けが必要です。レスポンスオブジェクトに content-length を設定してもうまくいかないようです。私は何か間違っていましたか?

res.set({
  'Content-Type': res._data.ContentType,
  'Content-Length': res._data.ContentLength,
  ETag: res._data.ETag
});
res.send(res._data.Body);

Express と body-parser を使用してデータを送信し、Content-Length を設定します。

res.header('Content-Type', res._data.ContentType);
res.header('content-length', res._data.ContentLength);
res.header('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0');

私もこれを試しました。

{ AcceptRanges: 'bytes',
  LastModified: 'Thu, 15 Jan 2015 22:23:43 GMT',
  ContentLength: '648789',
  ETag: '"7da971554e6ff4f6dfcdb7b2ba5e0be3"',
  ContentType: 'image/jpeg',
  Metadata: {},
  Body: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff db 00 43 00 08 06 06 07 06 05 08 07 07 07 09 09 08 0a 0c 14 0d 0c 0b 0b 0c 19 12 13 0f 14 ...> }

の結果ですconsole.log(res._data)。ご覧のとおり、content-length を設定しています。

GET /api/images/54b83dec5e7d97c546e0c41a 200 584.524 ms - 1227943

しかし、node.js はクライアントに間違った content-length をサイズ 1227943 として応答します。

Cache-Control:no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0
Connection:keep-alive
content-length:1227943
Content-Type:image/jpeg
Date:Thu, 15 Jan 2015 23:37:52 GMT
ETag:"7da971554e6ff4f6dfcdb7b2ba5e0be3"
X-Powered-By:Express

そしてクライアントも受け取ります。誰かが私が逃したものを知っていますか? 私を助けてください。

あ、言い忘れました。Postman(chrome extension) を使用してデータを取得すると、正常に動作します。

GET /api/images/54b83dec5e7d97c546e0c41a 200 664.427 ms - 648789

ですから、なぜそれが起こったのか本当にわかりません。

4

1 に答える 1