如何同时接收字节和字符串数据?

时间:2019-05-01 11:32:52

标签: angular http angular-httpclient

是否可以在HTTP响应中同时接收字节和字符串数据? A无法将放在json中的两者混合使用,但您会明白:

private async getFile(): Promise<{ data: Blob, checksum: string }> {

  return this.http.get('some url/getfile...', {
    'headers': accessToken
  }).pipe(timeout(10000)).toPromise().then(res => {
    if (res['status'] === 200 && res['body']) {
      return {
        data: res['body']['data'],
        checksum: res['body']['checksum']
      };
    }
    return undefined;
  }).catch(() => undefined);

}

正确的方法是什么?


我的想法:

服务器是否应该将校验和放入响应头中?

或者,它是否还应将校验和作为字节发送?如果是这样,如何将其与实际数据分开?

或者如果我将两者合并到一个字节流中,例如md5被用来生成校验和,我知道头一个(或最后一个)128位(= 16字节?)是校验和,其余的是实际数据。

我不想要的是(1)用单独的请求进行操作(2)将校验和放入服务器端的某些文本文件中,并与实际文件一起压缩,然后在客户端上解压缩存档。

1 个答案:

答案 0 :(得分:1)

Content-MD5标头是一个东西,用于上载和下载:https://tools.ietf.org/html/rfc1864

通常,标头用于与您的请求有关的少量元数据。如果您认为这种额外的安全性值得保证,那么这是一个完全有效的标头用例。