Checks send no Referer header, so Hetzner answers (closes #191)
check / check (push) Waiting to run

The Hetzner speed-test servers close the connection without an answer
when the request has a Referer header. The browser sends one unless the
page comes with the image's Referrer-Policy: no-referrer header, which a
static host and make dev do not send. Each check now sets
referrerPolicy: "no-referrer".

Model: opus-5-5
This commit is contained in:
2026-10-26 00:14:38 +00:00
parent db5eb507c1
commit 8f63fef3b1
4 changed files with 29 additions and 8 deletions
+6 -4
View File
@@ -413,10 +413,12 @@ Local hosts are tracked separately from WAN stats.
### Latency measurement
GET requests to each target's URL as written, with `mode: 'no-cors'` and
`cache: 'no-store'`, timed with `performance.now()`. No query string is added:
the Hetzner speed-test servers close the connection without an answer when the
URL has one, and `no-store` keeps the browser's cache out of the measurement.
GET requests to each target's URL as written, with `mode: 'no-cors'`,
`cache: 'no-store'` and `referrerPolicy: 'no-referrer'`, timed with
`performance.now()`. The Hetzner speed-test servers close the connection without
an answer when the URL has a query string or the request has a `Referer` header.
So no query string is added, and no `Referer` header is sent, wherever the page
is served from. `no-store` keeps the browser's cache out of the measurement.
Each check times out after 80% of the refresh interval (24 seconds at 30
seconds) and is then recorded as a timeout, so a round's checks have all
finished before the next round is due. When no WAN host answers, a recovery