diff --git a/js/examples/maplibre.html b/js/examples/maplibre.html index 80e89df..1ada9e9 100644 --- a/js/examples/maplibre.html +++ b/js/examples/maplibre.html @@ -23,7 +23,7 @@ let PMTILES_URL = "https://protomaps.github.io/PMTiles/protomaps(vector)ODbL_firenze.pmtiles"; - const p = new pmtiles.PMTiles(PMTILES_URL) + const p = new pmtiles.PMTiles(PMTILES_URL); // this is so we share one instance across the JS code and the map renderer protocol.add(p); diff --git a/js/index.ts b/js/index.ts index f97a0c4..d781e40 100644 --- a/js/index.ts +++ b/js/index.ts @@ -282,15 +282,21 @@ export class FileAPISource implements Source { export class FetchSource implements Source { url: string; + customHeaders: Headers; - constructor(url: string) { + constructor(url: string, customHeaders: Headers = new Headers()) { this.url = url; + this.customHeaders = customHeaders; } getKey() { return this.url; } + setHeaders(customHeaders: Headers) { + this.customHeaders = customHeaders; + } + async getBytes( offset: number, length: number, @@ -303,9 +309,15 @@ export class FetchSource implements Source { signal = controller.signal; } + const requestHeaders = new Headers(this.customHeaders); + requestHeaders.set( + "Range", + "bytes=" + offset + "-" + (offset + length - 1) + ); + let resp = await fetch(this.url, { signal: signal, - headers: { Range: "bytes=" + offset + "-" + (offset + length - 1) }, + headers: requestHeaders, }); // TODO: can return 416 with offset > 0 if content changed, which will have a blank etag.