我正在使用Spark来提供不同种类的内容。 “ Content-Length”的计算正确,但是使用时我遇到了一个问题:
response.header("Content-Encoding", "gzip")
根据their documentation,当设置了标题时,spark会自动gzip内容...并且可以做到。
但是,我之前计算的“内容长度”不再有效,因此在浏览器中出现“ net :: ERR_CONTENT_LENGTH_MISMATCH”错误。
我自己将其压缩,并无法计算出最终的大小,因为火花将再次压缩输出。
如何知道火花压缩输出后的结果尺寸是什么?
我在Spark上创建了一个库,该库会自动设置此类标头,有趣的部分看起来像(简化):
if(request.headers("Accept-Encoding")?.contains("gzip")) {
response.header("Content-Encoding", "gzip")
// How to get or calculate the resulting size?
response.header("Content-Length", ???????)
}
问题是,Spark没有自动设置“ Content-Length”标头,因此我试图添加它。到那时为止,计算是正确的(没有压缩),但是由于Spark将压缩输出(因为它检测到“ gzip”为编码),因此我没有可靠的方法来正确设置它。
我想到的解决此问题的方法是:
我当前的解决方案是在使用Content-Length
标头时不设置gzip
标头(但是对于大文件来说,这不是理想的选择,因为浏览器不知道已经下载了哪个百分比)。
我希望这些细节能使情况更加明朗。
我正在使用Spark投放不同类型的内容。 “ Content-Length”的计算正确,但是在使用时遇到了一个问题:response.header(“ Content-Encoding”,“ gzip”)根据他们的...
感谢您的澄清!
Content-Length
。不知道大小有点烦人,但并不罕见。