Skip to content

Fix #3: drop broken CORS proxy, use MediaWiki API directly#4

Open
fredrik-lindseth wants to merge 1 commit intoosmno:mainfrom
fredrik-lindseth:fix/drop-broken-cors-proxy
Open

Fix #3: drop broken CORS proxy, use MediaWiki API directly#4
fredrik-lindseth wants to merge 1 commit intoosmno:mainfrom
fredrik-lindseth:fix/drop-broken-cors-proxy

Conversation

@fredrik-lindseth
Copy link
Copy Markdown
Member

Closes #3.

Diagnose

CORS-proxyen production.osmno-cors-proxy.mathiash98.workers.dev (Cloudflare Worker) returnerer gzip-komprimert body men sender ikke med Content-Encoding: gzip-header. Browseren ser Content-Type: text/html og prøver å parse rå gzip-bytes som tekst → ERR_CONTENT_DECODING_FAILED på alle datasett.

Bekreftet ved å lagre svaret rått:

$ curl -s "https://production.osmno-cors-proxy.mathiash98.workers.dev/wiki/...?url=wiki.openstreetmap.org" -o r.bin
$ file r.bin
r.bin: gzip compressed data, original size modulo 2^32 46531

Body er gzip, men ingen content-encoding-header i responsen.

Løsning

Begge datakildene serverer allerede CORS-headere selv — proxyen er overflødig:

Kilde CORS-test
wiki.openstreetmap.org/w/api.php?...&origin=* access-control-allow-origin: *
obtitus.github.io/... (GitHub Pages) access-control-allow-origin: *

For wiki bruker vi MediaWiki action API (action=parse&prop=text&format=json&origin=*) og henter rendret HTML fra parse.text["*"]. For andre hostnavn (per nå kun obtitus.github.io) henter vi siden direkte.

Fordeler:

  • Fjerner et single point of failure hostet på en personlig Cloudflare-konto.
  • MediaWiki-API-et er stabilt og dokumentert.
  • Kortere requestkjede.

Test

Kjørt lokalt mot http://localhost:8765/?project=ssr (og verifisert med curl for alle 6 datasett: byggimport, NVDB-mangler, highway-tag, SSR, N50, barnehagefakta). Alle kall returnerer 200 og kommunene blir fargelagt korrekt på kartet.

Test plan

  • Verifiser at alle prosjekter (SSR, NVDB missing, Highway tags, N50, Barnehagefakta, Building import) laster og fargelegger kommuner på osmno.github.io/progress-visualizer/.
  • Verifiser ingen Failed to fetch / ERR_CONTENT_DECODING_FAILED i console.

The Cloudflare Worker proxy at production.osmno-cors-proxy.mathiash98.workers.dev
forwards a gzipped upstream body without setting Content-Encoding: gzip,
so browsers fail with ERR_CONTENT_DECODING_FAILED on every progress page
(see osmno#3).

Drop the proxy entirely. Both data sources already serve CORS:

- wiki.openstreetmap.org exposes the MediaWiki action API with origin=*
  (Access-Control-Allow-Origin: *). Use action=parse&prop=text and pull
  the rendered HTML from parse.text["*"].
- obtitus.github.io is GitHub Pages, which sends
  Access-Control-Allow-Origin: * for static files. Fetch directly.

This removes a single point of failure hosted on a personal Cloudflare
account and shortens the request path.
@fredrik-lindseth fredrik-lindseth mentioned this pull request Apr 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Load failed

1 participant