在字节数组上模仿 'gzip' 内容编码

Imitate 'gzip' content encoding on byte array

我正在开发一个使用 .pbf 文件的应用程序,这些文件使用来自 PHP 的 header 'Content-Encoding: gzip' 从服务器发送到 Mapbox GL JS,现在我正在尝试模拟存储中的图块具有相同的行为。

现在我无法以类似于我尝试从 android 的存储中传递图块的方式来执行此操作,因为每当我将 header 添加到响应,它立即拒绝并显示以下拒绝消息:

{
"config": {
    "transformRequest": {},
    "transformResponse": {},
    "timeout": 0,
    "xsrfCookieName": "XSRF-TOKEN",
    "xsrfHeaderName": "X-XSRF-TOKEN",
    "maxContentLength": -1,
    "headers": {
        "Accept": "application/json, text/plain, */*"
    },
    "method": "get",
    "Access-Control-Allow-Origin": "*",
    "Accept": "*/*",
    "url": "http://localhost:8080/get-tile/14/8468/5344"
},
"request": {
    "statusText": "",
    "status": 0,
    "responseURL": "",
    "response": "",
    "responseType": "",
    "responseXML": null,
    "responseText": "",
    "upload": {
        "ontimeout": null,
        "onprogress": null,
        "onloadstart": null,
        "onloadend": null,
        "onload": null,
        "onerror": null,
        "onabort": null
    },
    "withCredentials": false,
    "readyState": 4,
    "timeout": 0,
    "onprogress": null,
    "onloadstart": null,
    "onloadend": null,
    "onload": null,
    "onabort": null
    }
}

当我不使用header;响应发送正常并显示仍然压缩的数据,Mapbox GL JS 不理解。现在,我尝试使用 GZIPOutputStream 和 GZIPInputStream 来读取文件并将其压缩以获得正确的数据,但它一直向我显示与文件本身的 header 不正确或不正确相关的错误属于 GZIP 类型(考虑到使用 Content-Encoding: gzip 作为支持 header 从 PHP 提供相同的二进制 blob 会很奇怪)。

到目前为止,我尝试过的是:

我正在修改后的 Mapbox GL JS 环境中使用 axios 检索图块,直接从服务器加载图块并完美绘制地图数据。但是,当通过 http 服务器从本地存储提供服务时,它将无法工作。

问题是输出时文件附加了 6 个字节,导致 Gzip header 被隐藏。之后,用gzip编码返回完美无缺