【问题标题】:Meteor HTTP.get results in corrupt (?) contentMeteor HTTP.get 导致损坏 (?) 内容
【发布时间】:2018-03-07 22:45:32
【问题描述】:

在服务器上,我这样做:

var result = HTTP.get("https://spoticle001.s3-eu-west-1.amazonaws.com/2NtoSkvYZeeetrf3k-0_thumb");
console.log("content length:", result.content.length);

我看到 11781。但是,标题“content-length”字段指示 12047,这确实是此 URL 处文件的实际大小。

在客户端,相同的请求会产生另一个内容长度:11618。

这似乎是 HTTP.get 最简单的用例。为什么会有如此奇怪的结果?

【问题讨论】:

    标签: http meteor server


    【解决方案1】:

    那是因为HTTP 正在使用npmrequest 模块发出请求,并且默认情况下,响应编码设置为utf8

    encoding - 用于响应数据的setEncoding 的编码。如果null,则body 作为Buffer 返回。其他任何内容(包括undefined 的默认值)都将作为编码参数传递给toString()(这意味着默认情况下这实际上是utf8)。 (注意:如果你需要二进制数据,你应该设置encoding: null。)

    你可以这样做:

    var result = HTTP.get("...", {
      npmRequestOptions: { encoding: null }
    });
    

    测试:

    result.content.length
    > 12047
    

    有用信息:request options

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 1970-01-01
      相关资源
      最近更新 更多